下面將通過實例分析兩種排序實現方式及實現圖解:
假設有 Table A 和 B 兩個表結構分別如下:
1 sky@localhost : example 01:48:21> show create table AG
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 BG
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不需要進行實際的排序操作。