狂妄的老头 2021-02-03 09:23 采纳率: 0%
浏览 164

数据库为什么禁止使用属性隐式转换

数据库30条军规中有一条:

(25)禁止使用属性隐式转换

解读:SELECT uid FROM t_user WHERE phone=13812345678 会导致全表扫描,而不能命中phone索引,猜猜为什么?(这个线上问题不止出现过一次)

所谓猜猜为什么,那到底是为什么?

还有,mybatis 在dao层接口上入参int类型,赋给数据库varchar类型就算是产生属性隐式转换了么?

  • 写回答

2条回答 默认 最新

  • 纯白微风<alert> 2021-02-03 09:41
    关注

    查询时候索引带入表达式、函数都会导致索引失效,隐式转换相当于将索引带入函数计算了,字符集的隐式转码也会导致索引失效而进行全表查询

    评论

报告相同问题?

悬赏问题

  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号