WEB开发网
开发学院数据库MySQL MySQL中Order By实现原理分析 阅读

MySQL中Order By实现原理分析

 2009-03-27 11:18:24 来源:WEB开发网   
核心提示: 假设我们在Table A和B上执行如下SQL:1sky@localhost:example01:44:28>EXPLAINSELECTA.*FROMA,B23->WHEREA.c1>2ANDA.c2<5ANDA.c2=B.c2ORDERBYA.c1G45***1.r

假设我们在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.c1G
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实现原理分析

2、通过相应的排序算法,将取得的数据在内存中进行排序方式,MySQL 比需要将数据在内存中进行排序,所使用的内存区域也就是我们通过sort_buffer_size 系统变量所设置的排序区。这个排序区是每个Thread 独享的,所以说可能在同一时刻在MySQL 中可能存在多个 sort buffer 内存区域。

上一页  1 2 3 4  下一页

Tags:MySQL Order By

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接