MySQL 什么情况下无法使用索引

  1. 通过索引扫描的记录超过30%,变成全表扫描

  2. 联合索引中,第一个索引列使用范围查询

  3. 联合索引中,第一个查询条件不是最左索引列

  4. 模糊查询条件列最左以通配符%开始

  5. 内存表(HEAP)表使用HASH索引时,使用范围检索或者ORDER BY

  6. 两个独立索引,其中一个用于检索,一个用于排序

  7. 使用了不同的ORDER BY 和 GROUP BY 表达式

  8. 索引列检索使用函数 

  9. 两表连接的时候如果连接字段类型不一致是无法使用索引的(其实可以使用,但是需要进行隐式转换,导致没有办法2个表都使用到索引,只有一个表能用到索引,另一个表被隐式转换了 用不到索引 )

2个独立的索引 and的情况下只能用到一个索引,or的情况下可以用到index mearge把结果联合起来

image.png

image.png

image.png

image.png

image.png

image.png