题目SQL:
定值、范围还是排序,一般order by是给个范围
以下例子C3作用于排序而不是查找,所以用到两个索引字段
查找排序顺序最好与建的索引一致,否则可能会出现using filesort,因为第三层顺序mysql并不知道只能用自身文件排序
以下例子c2,c3用于排序无filesort,换成c3,c2就有filesort了,order by顺序不能乱
用c1,c2两个字段索引,但是c2、c3用于排序,无filesort
group by基本上都要进行排序,会有临时表产生且group by顺序也不能乱
一般性建议:
- 对于单键索引,尽量选择针对当前query过滤性更好的索引
- 在选择组合索引的时候,当前query中过滤性最好的字段在索引字段顺序中,位置越靠左越好。
- 在选择组合索引的时候,尽量选择可以能够包含当前query中的where字句中更多字段的索引
- 尽可能通过分析统计信息和调整query的写法来达到选择合适索引的目的