MySQL索引失效的原因有很多,以下是一些常见的情况:
-
查询条件中使用了函数或表达式:如果在查询条件中使用了函数(如
DATE()
、UPPER()
等)或表达式,MySQL 无法利用索引。例如,WHERE UPPER(name) = 'JOHN'
。 -
类型不匹配:查询条件的字段类型和索引字段的类型不匹配。例如,字符串和数字比较,
WHERE age = '25'
中的age
是数字类型,而 ‘25’ 是字符串。 -
使用了
OR
关键字:如果OR
两边的条件中有一个没有索引,则索引可能会失效。例如,WHERE id = 1 OR name = 'John'
,如果name
没有索引,则不会使用id
的索引。 -
模糊查询:在使用
LIKE
进行模糊查询时,如果模式以%
开头&#