上一博文提到Extra,本章根据个人理解说明Extra分析情况
Using filesort:发生文件内排序 ,创建索引 比如1 2 3,最后只用到 13, 2只能另起炉灶 相当于多操作一次 最好就是都用上,按照原来规划的方案执行
Using Temporary:产生临时表保存中间结果,临时表最消耗性能 ,由于分组 order by group by 没使用全索引 ,最好就是都用上,按照原来规划的方案执行
Using Index :产生覆盖索引 ,效率还是不错的
如果同时出现Using where ,表明索引被用来执行索引键值的查找
如果不出现的话,表明索引用来读取数据而非执行查找动作
单表索引建立:
如果建立索引的字段 用在range级别 会导致后面的索引失效,可以不对范围的字段进行索引,具体的根据业务需求建合适的索引
两表索引:
如果发生左外连接,对右表建立索引,好于对左表建立索引,右外链接同理
三表索引:
和两表同理,但是尽可能减少join语句中的NestedLoop的循环总次数,”永远是用小结果集驱动大结果集”.
优先优化内NestedLoop的内层循环、
保证join语句中被驱动表上join条件字段已经被索引,当无法保证呗驱动表的join条件字段被索引且内存资源充足的前提下,不要太吝啬joinBuffer的设置