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的更多相关文章

  1. Inside TSQL Querying - Chapter 1. Logical Query Processing

    Logical Query Processing Phases Summary (8) SELECT (9) DISTINCT (11) <TOP_specification> <s ...

  2. Sentry 监控 - Snuba 数据中台架构(Query Processing 简介)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  3. Inside TSQL Querying - Chapter 2. Physical Query Processing

    Summary Description The SQL language is spoken by most database experts, and all relational database ...

  4. CMU Database Systems - Query Processing

    Query Model Query处理有三种方式, 首先是Iterator model,这是最基本的model,又称为volcano,pipeline模式 他是top-down的模式,通过next函数 ...

  5. adaptive query processing

    http://www.cs.umd.edu/~amol/talks/VLDB07-AQP-Tutorial.pdf https://www.cis.upenn.edu/~zives/research/ ...

  6. In-Stream Big Data Processing

    http://highlyscalable.wordpress.com/2013/08/20/in-stream-big-data-processing/   Overview In recent y ...

  7. SQL optimizer -Query Optimizer Deep Dive

    refer: http://sqlblog.com/blogs/paul_white/archive/2012/04/28/query-optimizer-deep-dive-part-1.aspx  ...

  8. [转载]MongoDB学习 (五):查询操作符(Query Operators).1st

    本文地址:http://www.cnblogs.com/egger/archive/2013/05/04/3059374.html   欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 查询操作符(Quer ...

  9. Deploying Customizations in Oracle E-Business Suite Release 12.2

    DeployingCustomizations in Oracle E-Business Suite Release 12.2 This documentdescribes how to deploy ...

  10. Microsoft SQL Server Trace Flags

    Complete list of Microsoft SQL Server trace flags (585 trace flags) REMEMBER: Be extremely careful w ...

随机推荐

  1. HDU4738 tarjan割边|割边、割点模板

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4738 坑点: 处理重边 图可能不连通,要输出0 若求出的结果是0,则要输出1,因为最少要派一个人 #inc ...

  2. pdfbox加载pdf时遇到wrappedioexception报错处理方式

    现在一个项目要对pdf做处理.由于其中一个pdf约为80M左右,用pdfbox读取pdf时遇到了wrappedioexception错误.监控得到说内存不足.于是请教项目经理.他告诉我在Open De ...

  3. php时间类

    1.需求 数据库的时间都是用10个长度的时间戳存储,拿出来的时候要转为更易读的格式 2.例子 <?php class Mydate{ public function get_millisecon ...

  4. bodyParser中间件的研究

    原文链接: bodyParser中间件 bodyParser中间件用来解析http请求体,是express默认使用的中间件之一. 使用express应用生成器生成一个网站,它默认已经使用了 bodyP ...

  5. python --enable-shared

    https://github.com/docker-library/python/issues/21 例如编译安装python3.5.2,脚本如下: wget https://s3.cn-north- ...

  6. select2 demo

    https://select2.github.io/examples.html 一大堆的坑: 1. 不同版本之间貌似不兼容,对应版本看对应的文档. 2. 4.0.3版本: 1). 自定义渲染的opti ...

  7. Python~字典

    if not isinstance(x, (int, float)): raise TypeError('bad operand type')   range() raw_input(‘birth’) ...

  8. B+Tree和MySQL索引分析

    首先区分两组概念: 稠密索引,稀疏索引: 聚簇索引,非聚簇索引: btree和mysql的分析: 参见 http://blog.csdn.net/hguisu/article/details/7786 ...

  9. ->code vs 2879 堆的判断(堆的学习一)

    2879 堆的判断  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold   题目描述 Description 堆是一种常用的数据结构.二叉堆是一个特殊的二叉树,他的父 ...

  10. linux的安装

    在CentOS 7中提供了两种桌面"GNOME DESKTOP" 和 "KDE Plasa Workspaces",我们以安装"GNOME DESKT ...