索引失效指的是在 SQL 查询过程中,索引不会被使用,导致查询效率低下。以下是一些可能导致索引失效的情况:
- 对索引列进行了函数操作,例如
WHERE upper(name) = 'ABC',这会导致索引失效,因为数据库无法在索引中查找大小写不敏感的值。 - 索引列参与了数学运算,例如
WHERE age + 5 > 18,这也会导致索引失效。 - 对索引列使用了隐式类型转换,例如
WHERE name = 1,这会导致索引失效,因为数据库会将数字类型转换成字符串类型,从而无法在索引中查找。 - 在索引列上进行了表达式操作,例如
WHERE substring(name, 1, 3) = 'ABC',这会导致索引失效。 - 查询条件使用了
OR连接多个条件,例如WHERE name = 'ABC' OR age = 18,这会导致索引失效,因为无法在索引中同时查找两个列。 - 对索引列进行了
NOT操作,例如WHERE NOT name = 'ABC',这会导致索引失效。 - 在查询中使用了
LIKE操作符,例如WHERE name LIKE '%ABC%',这会导致索引失效,因为无法使用索引加速模糊匹配。