日期:2011-01-25 22:43:00 来源:本站整理
MySQL Order By 实现原理解析[MySQL防范]
本文“MySQL Order By 实现原理解析[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
总的来说,在 MySQL 中的ORDER BY有两种排序实现方法,一种是操纵有序索引获得有序数据,另一种则是通过呼应的排序算法,将获得的数据在内存中举行排序.
下面将通过实例解析两种排序实现方法及实现图解:
假定有 Table A 和 B 两个表构造辨别以下:
1
sky@localhost : example 01:48:21> show create
table A\G 2 3 *************************** 1. row *************************** 4 5 Table: A 6 7 Create Table: CREATE TABLE `A` ( 8 9 `c1` int(11) NOT NULL default '0', 10 11 `c2` char(2) default NULL, 12 13 `c3` varchar(16) default NULL, 14 15 `c4` datetime default NULL, 16 17 PRIMARY KEY (`c1`) 18 19 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 20 21 sky@localhost : example 01:48:32> show create table B\G 22 23 *************************** 1. row *************************** 24 25 Table: B 26 27 Create Table: CREATE TABLE `B` ( 28 29 `c1` int(11) NOT NULL default '0', 30 31 `c2` char(2) default NULL, 32 33 `c3` varchar(16) default NULL, 34 35 PRIMARY KEY (`c1`), 36 37 KEY `B_c2_ind` (`c2`) 38 39 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
1、操纵有序索引举行排序,实际上就是当我们 Query 的 ORDER BY 条件和 Query 的履行筹划中所操纵的 Index 的索引键(或前面几个索引键)完好一致,且索引拜候方法为 rang、 ref 大概 index 的时刻,MySQL 可以操纵索引次序而直接获得已经排好序的数据.这种方法的 ORDER BY 基本上可以说是最优的排序方法了,因为 MySQL 不需求举行实际的排序操作.
假定我们在Table A 和 B 上履行以下SQL:
1
sky@localhost : example 01:44:28> EXPLAIN SELECT A.*
FROM A,B 2 3 -> WHERE A.c1 > 2 AND A.c2 < 5 AND A.c2 = B.c2 ORDER BY A.c1\G 4 5 *************************** 1. row *************************** 6 7 id: 1 8 9 select_type: SIMPLE 10 11 table: A 12 13 type: range 14 15 possible_keys: PRIMARY 16 17 key: PRIMARY 18 19 key_len: 4 20 21 ref: NULL 22 23 rows: 3 24 25 Extra: Using where 26 27 *************************** 2. row *************************** 28 29 id: 1 30 31 select_type: SIMPLE 32 33 table: B 34 35 type: ref 36 37 possible_keys: B_c2_ind 38 39 key: B_c2_ind 40 41 key_len: 7 42 43 ref: example.A.c2 44 45 rows: 2 46 47 Extra: Using where; Using index |
我们通过履行筹划可以看出,MySQL实际上并没有举行实际的排序操作,实际上其整个履行历程以下图所示:
以上是“MySQL Order By 实现原理解析[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论