MySQL中orderby的实现原理是什么

本篇内容主要讲解“MySQL中order by的实现原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL中order by的实现原理是什么”吧!

创新互联是一家专业提供汕头企业网站建设,专注与成都网站设计、网站建设、H5场景定制、小程序制作等业务。10年已为汕头众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

全字段排序

MySQL会给每个线程分配一块内存用于排序,称为sort_buffer。

语句的执行流程:

(1)初始化sort_buffer,确定放入select的字段

(2)找到满足条件的行取出select的字段存入sort_buffer中

(3)一直查找到不满足条件的为止

(4)对sort_buffer中的数据按照排序的字段做排序

sort_buffer_size可以设置sort_buffer的大小。如果要排序的数据量小于 sort_buffer_size,排序就在内存中完成。但如果排序数据量太大,内存放不下,则不得不利用磁盘临时文件辅助排序。

rowid排序

max_length_for_sort_data,是 MySQL 中专门控制用于排序的行数据的长度的一个参数。它的意思是,如果单行的长度超过这个值,MySQL 就认为单行太大,要换一个算法。

语句执行流程:

(1)初始化sort_buffer,确定放入id和要排序的字段

(2)找到满足条件的行取出这两个字段存入sort_buffer中

(3)一直查找到不满足条件的为止

(4)对sort_buffer中的数据按照排序的字段做排序

(5)遍历排序结果,并按照id的值回表取出select的字段

如果MySQL认为内存足够大就会使用全字段排序,否则会使用rowid排序。对于 InnoDB 表来说,rowid 排序会要求回表多造成磁盘大量随机读,因此不会被优先选择。

到此,相信大家对“MySQL中order by的实现原理是什么”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


当前文章:MySQL中orderby的实现原理是什么
本文来源:http://bzwzjz.com/article/pdjjsp.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 成都网站制作公司 成都网站制作 成都网站建设 高端网站设计 成都网站建设推广 专业网站设计 成都网站制作 手机网站建设 重庆外贸网站建设 网站制作 广安网站设计 教育网站设计方案 品牌网站建设 成都企业网站建设 成都定制网站建设 网站制作 成都网站建设 企业网站设计 定制级高端网站建设 成都网站建设公司 成都网站制作