1.全匹配
对于一个联合索引index(a,b,c)列
在条件查询中,where后面都写上最佳
2、最佳左前缀法则
条件中,where后面条件abc字段按照火车头,火车身,火车尾来匹配
如果火车头或者火车身没用,那么索引失效(不需要顺序abc,只要不断开就行)
3、不在索引列上做任何操作
索引失效
(联合)4、范围条件放到最后 ------ mysql 好像不影响
abc条件 b<22,那么之后的索引失效
5、覆盖索引尽量使用
select的查询的列,全是索引列
6、不等于要慎用
!=和<> 使用索引失效
方法:select * 的* 换为索引列全拼,
7、null not影响大
is not null 等会索引失效,使用覆盖索引挽救
8、like查询
%字段%
%字段
索引失效
字段%索引不失效
9、字符类型的加引号,否则索引失效
10、or改为unino效率高,用or索引失效
补充:
使用desc 效率降低
*11.where XXX in(select XXX).的速度要比join慢些。但是join要注意一对多关系,可能查出来有重复数据。目录标题)