2019-11-10

昨晚下了雨,不过还好,今天晴天,高高兴兴来的公司加班。

如果对某个查询执行EXPLAIN EXTENDED后,再执行SHOW WARNINGS就可以看到重构出的查询。

排序优化

无论如何排序都是一个成本很高的操作,所以从性能角度考虑,应尽可能避免排序或则尽可能避免对大量数据进行排序。

  mysql会通过索引排序,当不能使用索引排序生成排序结果的时候,MYSQL 需要自己进行排序,如果数据量小则在内存中使用,如果数据量大则需要使用磁盘,不过MySQL 将这个过程统一称为文件排序(filesort)

如果需要排序的数据量小于“排序缓存区”,Mysql使用内存进行“快速排序”操作。如果内存不够排序,那么MySQL 会先将数据分块,对每个独立的块使用“快速排序”进行排序,并将各个块的排序结果存放在磁盘上,然后将各个排序好的块进行合并(merge),最后返回排序的结果。

MYSQL两种排序算法

    1.两次传输排序(旧版本使用)

    2.单次传输排序(新版本使用)

推荐阅读更多精彩内容