Logical query-processing phases
Logical query-processing phases in brief


(1) FROM
This phase identifies the query’s source tables and processes table operators.
Each table operator applies a series of subphases.
For example, the phases involved in a join are
(1-J1) Cartesian Product, (1-J2) ON Predicate, (1-J3) Add Outer Rows.
This phase generates virtual table VT1.
(1-J1) Cartesian Product
This phase performs a Cartesian product (cross join)
between the two tables involved in the table operator, generating VT1-J1.
(1-J1) Cartesian Product This
This phase filters the rows from VT1-J1 based on the predicate
that appears in the ON clause (<on_predicate>).
Only rows for which the predicate evaluates to TRUE are inserted into VT1-J2.
(1-J3) Add Outer Rows
If OUTER JOIN is specified (as opposed to CROSS JOIN or INNER JOIN),
rows from the preserved table or tables for which a match was not found
are added to the rows from VT1-J2 as outer rows, generating VT1-J3.
(2) WHERE
This phase filters the rows from VT1 based on the predicate that appears in the WHERE clause (<where_predicate>).
Only rows for which the predicate evaluates to TRUE are inserted into VT2.
(3) GROUP BY
This phase arranges the rows from VT2 in groups based on the set of expressions
(aka, grouping set) specified in the GROUP BY clause, generating VT3. Ultimately,
there will be one result row per qualifying group.
(4) HAVING
This phase filters the groups from VT3 based on the predicate that
appears in the HAVING clause (<having_predicate>). Only groups for
which the predicate evaluates to TRUE are inserted into VT4.
(5) SELECT
This phase processes the elements in the SELECT clause, generating VT5.
(5-1) Evaluate Expressions
This phase evaluates the expressions in the SELECT list, generating VT5-1.
(5-2) DISTINCT
This phase removes duplicate rows from VT5-1, generating VT5-2.
(6) ORDER BY
This phase orders the rows from VT5-2 according to the list specified in the ORDER BY clause,
generating the cursor VC6. Absent an ORDER BY clause, VT5-2 becomes VT6.
(7) TOP | OFFSET-FETCH
This phase filters rows from VC6 or VT6 based on the top or offset-fetch specification,
generating VC7 or VT7, respectively. With TOP, this phase filters the specified
number of rows based on the ordering in the ORDER BY clause, or based on arbitrary order
if an ORDER BY clause is absent. With OFFSET-FETCH, this phase skips the specified number of rows,
and then filters the next specified number of rows, based on the ordering in the ORDER BY clause.
The OFFSET-FETCH filter was introduced in SQL Server 2012.
to be end
Logical query-processing phases的更多相关文章
- Inside TSQL Querying - Chapter 1. Logical Query Processing
Logical Query Processing Phases Summary (8) SELECT (9) DISTINCT (11) <TOP_specification> <s ...
- Sentry 监控 - Snuba 数据中台架构(Query Processing 简介)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- Inside TSQL Querying - Chapter 2. Physical Query Processing
Summary Description The SQL language is spoken by most database experts, and all relational database ...
- CMU Database Systems - Query Processing
Query Model Query处理有三种方式, 首先是Iterator model,这是最基本的model,又称为volcano,pipeline模式 他是top-down的模式,通过next函数 ...
- adaptive query processing
http://www.cs.umd.edu/~amol/talks/VLDB07-AQP-Tutorial.pdf https://www.cis.upenn.edu/~zives/research/ ...
- In-Stream Big Data Processing
http://highlyscalable.wordpress.com/2013/08/20/in-stream-big-data-processing/ Overview In recent y ...
- SQL optimizer -Query Optimizer Deep Dive
refer: http://sqlblog.com/blogs/paul_white/archive/2012/04/28/query-optimizer-deep-dive-part-1.aspx ...
- [转载]MongoDB学习 (五):查询操作符(Query Operators).1st
本文地址:http://www.cnblogs.com/egger/archive/2013/05/04/3059374.html 欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 查询操作符(Quer ...
- Deploying Customizations in Oracle E-Business Suite Release 12.2
DeployingCustomizations in Oracle E-Business Suite Release 12.2 This documentdescribes how to deploy ...
- Microsoft SQL Server Trace Flags
Complete list of Microsoft SQL Server trace flags (585 trace flags) REMEMBER: Be extremely careful w ...
随机推荐
- HDU4738 tarjan割边|割边、割点模板
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4738 坑点: 处理重边 图可能不连通,要输出0 若求出的结果是0,则要输出1,因为最少要派一个人 #inc ...
- pdfbox加载pdf时遇到wrappedioexception报错处理方式
现在一个项目要对pdf做处理.由于其中一个pdf约为80M左右,用pdfbox读取pdf时遇到了wrappedioexception错误.监控得到说内存不足.于是请教项目经理.他告诉我在Open De ...
- php时间类
1.需求 数据库的时间都是用10个长度的时间戳存储,拿出来的时候要转为更易读的格式 2.例子 <?php class Mydate{ public function get_millisecon ...
- bodyParser中间件的研究
原文链接: bodyParser中间件 bodyParser中间件用来解析http请求体,是express默认使用的中间件之一. 使用express应用生成器生成一个网站,它默认已经使用了 bodyP ...
- python --enable-shared
https://github.com/docker-library/python/issues/21 例如编译安装python3.5.2,脚本如下: wget https://s3.cn-north- ...
- select2 demo
https://select2.github.io/examples.html 一大堆的坑: 1. 不同版本之间貌似不兼容,对应版本看对应的文档. 2. 4.0.3版本: 1). 自定义渲染的opti ...
- Python~字典
if not isinstance(x, (int, float)): raise TypeError('bad operand type') range() raw_input(‘birth’) ...
- B+Tree和MySQL索引分析
首先区分两组概念: 稠密索引,稀疏索引: 聚簇索引,非聚簇索引: btree和mysql的分析: 参见 http://blog.csdn.net/hguisu/article/details/7786 ...
- ->code vs 2879 堆的判断(堆的学习一)
2879 堆的判断 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 堆是一种常用的数据结构.二叉堆是一个特殊的二叉树,他的父 ...
- linux的安装
在CentOS 7中提供了两种桌面"GNOME DESKTOP" 和 "KDE Plasa Workspaces",我们以安装"GNOME DESKT ...