1. 减少大基数范围查询
1)少用!=,<>;
2)少用is null, is not null;
2.等值查询时,避免转换操作
1)避免在等号左侧的索引列上做计算操作,如函数,类型转换;
2)避免等号右侧的类型与索引类不同而引起类型转换;
3. 聚合索引查询时的最左前缀法则
1)范围条件的索引会中断左前缀匹配;
4.尽量应用覆盖索引,查询必要的列而非所有列
5.少用范围查询
1)少用or,in
2)Like查询时尽量采用后模糊“xxx%”,而非前模糊“%xxx”;
6.使用orderby或group by时尽量对索引列操作,避免出现filesort
7. in, exist
1)select * from A where id in (select id from B)
以B为驱动表去遍历A;适合于B数据量 < A数据量
2)select * from A where exists (select 1 from B where B.id = A.id)
以A为驱动表去遍历B;适合于B数据量 > A数据量
8.count
count(*) ,count(1)会统计字段为null的行;
count(col)不会统计该列为null的行;
网友评论