mysql中orderby排序使用索引优化

2025-06-02 08:32:42

1、order by子句,尽量使用index方式排序,避免使用filesort方式排序。建立一个tablA表作为演示。

mysql中orderby排序使用索引优化

2、现在使用explain select * from tablA where age > 20 order by age;这条sql语句排序不会产生filesort。

mysql中orderby排序使用索引优化
mysql中orderby排序使用索引优化
mysql中orderby排序使用索引优化

3、mysql支持两种方式的排序,filesort和index,index效率高,它指mysql扫描索引本身完成排序,filesort方式效率低。orderby满足两下情况会使用index方式排序,order by语句使用索引最左前列使用where子句与order by子句条件列组合满足索引最左前列。如果不在索引列上,filesort有两种算法:双路排序和单路排序。

mysql中orderby排序使用索引优化

4、如果单路排序内存不够,需要增大sort_buffer_size参数的设置,增大max_length_for_sort_data参数的设置。

mysql中orderby排序使用索引优化

5、mysql两种排序方式:文件排序或扫描索引排序,mysql能为排序与查询使用相同的索引。

mysql中orderby排序使用索引优化

6、以上就是mysql中orderby排序使用索引优化。我们应该尽量使用索引的情况下进行排序,不能使用使用的情况下去优化mysql文件排序的参数设置。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢