索引失效原因总结
复合索引使用左前缀
建立了一个索引分别字段为 a b c
where a … and b … order by c,这种使用顺序就符合最佳做前缀,从左向右依次使用了索引
where b … and a … order by c,这样很明显顺序不对,并不满足最佳左前缀,从而导致了索引失效
复合索引尽量使用全索引匹配
建立了一个复合索引 a b c,在查询的时候,尽量把这些索引字段都用上
不要在索引上进行任何操作(计算(+,-,*,/)、函数、(自动或手动)类型转换)
如果你在索引上进行任何操作,索引就必将失效。
比如你对索引进行加减乘除计算,进行一些函数计算,或进行一些类型转换,在这种情况下,索引都会失效
假设有 a b c 这些字段是复合索引,给 a 字段进行乘法操作,那么b c 字段都将会失效
in 与 extsts
一般式:外表大,用IN;内表大,用EXISTS。