文档章节

SQL执行顺序

海贼爱音乐
 海贼爱音乐
发布于 2017/08/17 09:11
字数 538
阅读 3
收藏 0
  1. from子句拼装来自不同数据源的数据
  2. where子句基于指定的条件对记录行进行筛选
  3. group by子句将数据分成多个组
  4. 使用聚合函数进行计算
  5. 使用having子句筛选分组
  6. 计算所有的表达式
  7. **select **的字段
  8. 使用order by对结果集进行排序

SQL查询处理的步骤序号:

(8)SELECT (9) DISTINCT (11) <TOP_specification> <select_list> (1) FROM <left_table>
(3) <join_type> JOIN <right_table> (2) ON <join_condition> (4) WHERE <where_condition> (5) GROUP BY <group_by_list> (6) WITH {CUBE | ROLLUP} (7) HAVING <having_condition> (10) ORDER BY <order_by_list>

以上每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有最后一步生成的表才会给调用者。如果没有在查询中指定某一个子句,将跳过相应的步骤。
逻辑查询处理阶段简介:

  1. FROM:对FROM子句中的前两个表执行笛卡尔积(交叉联接),生成虚拟表VT1。
  2. ON:对VT1应用ON筛选器,只有那些使为真才被插入到VT2。
  3. OUTER (JOIN):如果指定了OUTER JOIN(相对于CROSS JOIN或INNER JOIN),保留表中未找到匹配的行将作为外部行添加到VT2,生成VT3。如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表位置。
  4. WHERE:对VT3应用WHERE筛选器,只有使为true的行才插入VT4。
  5. GROUP BY:按GROUP BY子句中的列列表对VT4中的行进行分组,生成VT5。
  6. CUTE|ROLLUP:把超组插入VT5,生成VT6。
  7. HAVING:对VT6应用HAVING筛选器,只有使为true的组插入到VT7。
  8. SELECT:处理SELECT列表,产生VT8。
  9. DISTINCT:将重复的行从VT8中删除,产品VT9。
  10. ORDER BY:将VT9中的行按ORDER BY子句中的列列表顺序,生成一个游标(VC10)。
  11. TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回给调用者。

本文转载自:http://www.cnblogs.com/qanholas/archive/2010/10/24/1859924.html

共有 人打赏支持
下一篇: 存储过程
海贼爱音乐
粉丝 1
博文 87
码字总数 22611
作品 0
广州
CEO
私信 提问
数据库中间件 MyCAT 源码分析 —— 跨库两表Join

摘要: 原创出处 www.iocoder.cn/MyCAT/two-t… 「芋道源码」欢迎转载,保留摘要,谢谢! 本文主要基于 MyCAT 1.6.5 正式版 1. 概述 2. 主流程 3. ShareJoin 3.1 JoinParser 3.2 ShareJoin.pr...

芋道源码掘金Java群217878901
2017/10/03
0
0
oracle中Where子句顺序是否对SQL性能有影响

经常有人问到oracle中的Where子句的条件书写顺序是否对SQL性能有影响,我的直觉是没有影响,因为如果这个顺序有影响,Oracle应该早就能够做到自动优化,但一直没有关于这方面的确凿证据。在网...

疯狂的艺术家
2011/10/25
0
0
[MySql]关于sql和mysql对于别名不能调用的一些理解

由于有部分语句别名不能调用原来是由于别名机制不同引起的,为了避免下次发生就整理了一下sql和mysql执行顺序发现内部机制是一样的,最大区别是在别名的引用上 在写sql的时候,由于有部分语句...

NateHuang
2016/11/17
25
0
sql语句中各个部分函数执行的顺序

首先分析一下SQL: 这条SQL语句是否可以有下面两种理解呢   (1)先从Student表中选出age>20的数据,然后从这些数据中选择前面的10条数据。   (2)先从Student表中选出前10条数据,然后...

zhangbs
2016/08/22
63
0
数据库查询语句执行顺序

大神的总结: http://www.cnblogs.com/knowledgesea/p/4177830.html 参考:《Microsoft SQL Server 2008技术内幕:T-SQL查询》 查询语句的执行顺序: 1、FROM 子句:执行顺序为从后往前、从右...

Romanceling
2016/04/27
117
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
3
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
5
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0
大数据教程(11.8)Hive1.2.2简介&初体验

上一篇文章分析了Hive1.2.2的安装,本节博主将分享Hive的体验&Hive服务端和客户端的使用方法。 一、Hive与hadoop直接的关系 Hive利用HDFS存储数据,利用MapReduce查询数据。 二、Hive与传统数...

em_aaron
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部