首页 > 数据库技术 > 详细

MySQL排序方案选择

时间:2021-09-20 16:15:43      阅读:28      评论:0      收藏:0      [点我收藏+]

总结一下,MySQL 总是使用 “最快” 的排序方案:

1、当排序数据量不超过 sort buffer 容量时,MySQL 将会在内存使用快速排序算法进行排序(内部排序);当排序数据量超过 sort buffer 容量时,MySQL 将会借助临时磁盘文件使用归并排序算法进行排序(外部排序)

2、在进行真正排序时,MySQL 又会根据数据单行长度是否超过 max_length_for_sort_data 而决定使用 rowid 排序还是全字段排序,优先选择全字段排序,以减少回表次数。并且,如果 SQL 中使用 LIMIT 关键词,LIMIT 行数不大的情况下,会采用优先队列算法进行排序。

3、当需要借助临时表的时候,MySQL 会优先使用内存临时表(此时表引擎为 memory 引擎),回内存临时表取数据并不涉及随机读,也不涉及扫描行,效率较高。所以在配合内存临时表的时候,会使用 rowId 排序方式;当内存临时表大小超过 tmp_table_size 限制时,则需要将内存临时表转换为磁盘临时表,这时候由于回表意味着随机读,所以会搭配全字段排序方式。

参考

MySQL排序方案选择

原文:https://www.cnblogs.com/flowers-bloom/p/mysql-fast-sort-method.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!