数据库查询时,有时候会遇到猫慢查询,但是分析的结果却很奇怪,明明查询条件中是有索引的,但是查询却没有走
- 一种常见情况是数据库根据数据统计信息,判断不走索引会比索引效率更高,比如索引区分度不够
- 如果查询条件中在索引列上执行了函数操作,MySQL 认为会改变索引的顺序关系,所以也会放弃索引。所以不能在索引列上执行函数操作,可以修改为对where中的值进行函数操作,然后与索引比较
- 不能有隐式类型转换,比如索引字段是字符类型,条件是数字,也会把字符类型转换为数字然后比较
- 隐式字符编码转换,数据库在字符对比时,会站进行编码统一然后再对比
网友评论