mysql中order by实现原理分析--

mysql中order by实现原理分析--

ID:9643205

大小:49.00 KB

页数:2页

时间:2018-05-04

mysql中order by实现原理分析--_第1页
mysql中order by实现原理分析--_第2页
资源描述:

《mysql中order by实现原理分析--》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、MySQL中OrderBy实现原理分析>>  下面将通过实例分析两种排序实现方式及实现图解:  假设有TableA和B两个表结构分别如下:1 skylocalhost : example 01:48:21> shoe default NULL,16 17 PRIMARY KEY (`c1`)18 19 ) ENGINE=MyISAM DEFAULT CHARSET=utf820 21 skylocalhost : example 01:48:32> shople 01:44:28> EXPLAIN SELECT A.* FROM A,B2 3

2、 -> ySQL只能通过将取得的数据在内存中进行排序然后再将数据返回给客户端。在MySQL中filesort的实现算法实际上是有两种的,一种是首先根据相应的条件取出相应的排序字段和可以直接定位行数据的行指针信息,然后在sortbuffer中进行排序。另外一种是一次性取出满足条件行的所有字段,然后在sortbuffer中进行排序。>>>这篇文章来自..,。>  在MySQL4.1版本之前只有第一种排序算法,第二种算法是从MySQL4.1开始的改进算法,主要目的是为了减少第一次算法中需要两次访问表数据的IO操作,将两次变成了一次,但相应也会耗用更多的sort

3、buffer空间。当然,MySQL4.1开始的以后所有版本同时也支持第一种算法,MySQL主要通过比较我们所设定的系统参数max_length_for_sort_data的大小和Query语句所取出的字段类型大小总和来判定需要使用哪一种排序算法。如果max_length_for_sort_data更大,则使用第二种优化后的算法,反之使用第一种算法。所以如果希望ORDERBY操作的效率尽可能的高,一定要主义max_length_for_sort_data参数的设置。曾经就有同事的数据库出现大量的排序等待,造成系统负载很高,而且响应时间变得很长,最后查出正是因为M

4、ySQL使用了传统的第一种排序算法而导致,在加大了max_length_for_sort_data参数值之后,系统负载马上得到了大的缓解,响应也快了很多。  我们再看看MySQL需要使用filesort实现排序的实例。  假设我们改变一下我们的Query,换成通过A.c2来排序,再看看情况:1 skylocalhost : example 01:54:23> EXPLAIN SELECT A.* FROM A,B2 3 -> ple 02:46:15> explain select A.* from A,B2 3 -> porary; 

5、Using filesort26 27 *************************** 2. rople.A.c244 45 roize上一页123下一页>>>>这篇文章来自..,。r将Usingtemporary过程显示在第一行对TableA的操作中,难道只是为让执行计划的输出少一行?  实际执行过程应该是如下图所示:上一页123>>>>这篇文章来自..,。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。