https://www.cnblogs.com/bypp/p/7755307.html
转载:sql优化详解:https://blog.youkuaiyun.com/shi_hong_fei_hei/article/details/81022161
MySQL无法使用索引的情况总结
(1)字段使用函数,将无法使用索引
(2)Join 语句中 Join 条件字段类型不一致的时候 MySQL 无法使用索引
(3)复合索引的情况下,如果查询条件不包含索引列的最左边部分,即不满足最左前缀原则,则不会使用索引
(4)如果mysql估计使用索引扫描比全表扫描更慢,则不使用索引。(扫描数据超过30%,都会走全表)
(5)以%开头的like查询
(6)数据类型出现隐式转换的时候也不会使用索引,特别是当列类型是字符串,那么一定记得在where条件中把字符串常量值用引号引起来,否则即便这个列上有索引,MySQL也不会用到,因为MySQL默认把输入的常量值进行转换以后才进行检索
(7)用or分割开的条件,如果 or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到