-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
案例一:条件字段函数操作
B+ 树依靠同一层兄弟节点的有序性而拥有快速定位能力,对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。但优化器并不是要放弃使用这个索引,放弃了树搜索功能,优化器可以选择遍历主键索引,也可以选择遍历索引
对于不改变有序性的函数,也不会考虑使用索引,例如:select * from tradelog where id + 1 = 10000
案例二:隐式类型转换
在 MySQL 中,如果查询字段类型和参数类型不一致时,会执行类型转换,也就会触发案例一的情况。
字符串和数字做比较会将字符串转换成数字
案例三:隐式字符编码转换
表连接查询的时候如果两个表的字符集不同则用不上关联字段的索引,有两种办法解决:
- 将两个表的字符集修改一致
- 查询时主动转换关联字段字符集