什么是file_sort?如何避免file_sort

阿里巴巴编码规范有这么一例

【推荐】如果有order by场景,请注意利用索引的有序性。 order by最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现file_sort的情况,影响查询性能。

如果order by的列上有索引,那么就可以利用索引的有序性进行排序;
如果没有索引,那么就是file_sort,可以理解为外部排序,就是把select的数据,按照order by的列 ,在内存中进行一次排序,然后返回结果。

什么是索引的有序性?

简单理解为,索引本身就是对某列建立的一个可以按照一定顺序规格访问的目录。通过 order by的列上的索引来访问,那么默认获取到的值就是按照这列排好的顺序。就是利用到了索引的有序性。

order by排序原理

1.利用索引的有序性获取有序数据
2.利用内存/磁盘文件排序获取结果
1) 双路排序:是首先根据相应的条件取出相应的排序字段和可以直接定位行数据的行指针信息,然后在sort buffer 中进行排序。
2)单路排序:是一次性取出满足条件行的所有字段,然后在sort buffer中进行排序。
---------------------
作者:一个不靠谱的程序员
来源:CSDN
原文:https://blog.csdn.net/u013705066/article/details/82257099
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自www.cnblogs.com/magicya/p/10290251.html