1. 建表
2。 几组sql的explain分析:
order by排序 group by分组
在c1,c2,c3,c4建立符合索引。
如下图:查询顺序1243,4321都可以使用到索引,因为mysql优化器,会优化我们的sql,会对sql进行重新排序
如下图:使用到了3个索引,范围后全失效
如下图:还是使用到了4个索引
order by
如下图:用到了2个索引,虽然c3没有查询,但是用到了排序上
如下图:只是用到了2个索引,出现了filesort,c4排序未使用到索引,缺了c3
如下图:只用了c1一个索引,c2,c3用于排序,无filesort
如下图:只用了c1一个索引,出现了filesort,因为order by顺序跟我们建立的索引顺序不一致
如下图:两个是一样的,使用到了c1,c2索引,c2,c3进行排序,无filesort
如下图:虽然oder by c3,c2, 违反了建立索引顺序,但是第一个sql有常量c2,不出现filesort。
group by
如下如:group by 也要与索引顺序相关
总结:
建议:
题目练习:
注意:
a=3 and b>4 and c=5 只使用到了a和b索引
a=3 and b like ‘kk%’ and c=5 使用到了a,b,c三个索引