在哪些情况下索引会失效?

92 阅读1分钟

在使用索引时有以下情形会出现索引失效:

使用 != 、or来拼接条件,以及使用null做判断

使用条件索引列做运算,例如 where age + 1 = 20 (索引会失效) where age = 20-1 (索引生效)

不遵守最左匹配法则,如: name like '%a'

在进行字符串比较的时候没有使用引号,如:a = '1' 写成 a = 1

在进行分页查询的时候,如果数据量太大,如:limit 99999,100 ,对于这种情况,一般可以加上限制条件,比如要查询第2000页的数据,每页显示100条,那么可以加上 id > 97999

还有就是在使用 in 的时候,里面的元素个数一般都不会超过1000个

最后就是使用 varchar 类型时,字符编码不一致也会导致索引失效