MySQL中一条SELECT语句是如何执行的
查询操作是关系数据库中使用最为频繁的操作,也是构成其他SQL语句(如DELETE、UPDATE)的基础。
SELECT语法如下
(5)SELECT DISTINCT <select_list>
(1)FROM <left_table> <join_type> JOIN <right_table> ON <on_predicate>
(2)WHERE <where_predicate>
(3)GROUP BY <group_by_specification>
(4)HAVING <having_predicate>
(6)ORDER BY <order_by_list>
(7)LIMIT n, m
SELECT语句的处理过程
- FROM阶段
- WHERE阶段
- GROUP BY阶段
- HAVING阶段
- SELECT阶段
- ORDER BY阶段
- LIMIT阶段
FROM阶段
一条查询的sql语句先执行的是FROM table负责把数据库的表文件加载到内存中去
WHERE阶段
WHERE会把表中的数据进行过滤,取出符合条件的记录行,生成一张临时表
GROUP BY阶段
GROUP BY阶段按照指定的列名切分成若干临时表
HAVING阶段
该阶段根据HAVING子句中出现的谓词对虚拟表进行分组进行筛选
SELECT阶段
这个阶段是投影的过程,处理SELECT子句提到的元素
- 计算SELECT列表中的表达式
- 若有DISTINCT,则删除重复行
ORDER BY阶段
根据ORDER BY子句中指定的字段进行排序
LIMIT阶段
取出指定行的记录,产生临时表,并返回给查询用户
还没有评论,来说两句吧...