MySQL中Order By实现原理分析
2009-03-27 11:18:24 来源:WEB开发网下面将通过实例分析两种排序实现方式及实现图解:
假设有 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不需要进行实际的排序操作。
- ››MySql数据库插入式的多存储引擎机制
- ››MySQL和PDO测试对比
- ››MySQL大表中重复字段的查询效率方法
- ››MySQL中BLOB字段类型介绍
- ››mysql 数据库查询随机数量条目的效率问题及解决办...
- ››MySQL中两种索引Hash与B-Tree的区别
- ››MySql存储过程 带参数处理方式
- ››MySQL数据表在phpmyadmin中的强制修复
- ››MySQL 5 乱码问题处理办法
- ››mysql sql语法错误 1149
- ››MySQL 1040 错误 Too many connections
- ››MySQL client ran out of memory(2008)
更多精彩
赞助商链接