SQL Server执行逻辑查询时,SQL被解析的步骤

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
全局流量管理 GTM,标准版 1个月
简介:

以下这段对SQL Server执行逻辑查询时,SQL被解析的步骤。摘自《SQL Server 2005技术内幕 T-SQL查询》。这是一本非常好的讲解SQL Server的书,整个SQL Server 2005技术内幕系列都是,个人强烈推荐。

我一直认为,学好任何一种技术,没有什么比学好它的基础知识和底层原理更重要。如果你相信有“捷径”,那么这就是唯一的“捷径”。了解这些,有助于你更快地掌握技术最本质的核心。

我真希望早点看到那些好书,也希望看到这篇文章的你,能有点收获,多读好书,少走一些弯路。

他山之石可以攻玉!

以上步骤从1-11按顺序被执行,如果没有将跳过相应步骤;

以上每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表仅用于查询器内部使用,对调用者或外部查询不可用,只有最后一步生成的表才会返回给调用者。

逻辑查询处理阶段:

1. From:对From子句中的前两个表(left_tableright_table)执行笛卡尔积[交叉联结],生成虚拟表VT1.

2. On:VT1应用On筛选器,只有那些使<join_condition>为真的行才被插入VT2

3. Outer(Join):如果指定了OUTER Join(相对于Cross JoinInner Join),保留表中未找到匹配的行将作为外部行添加到VT2,生成T3。如果From子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。

4. Where:对VT3应用WHERE筛选器,只有<where_condition>True的行才被插入VT4

5. Group By:按Group By子句中的列列表对VT4中的行分组,生成VT5.

6. CUBE|ROLLUP:把超组插入到VT5,生成VT6.

7. Having:对VT6应用Having筛选器。只有<having_condition>true的组才会被插入VT7

8. Select:处理select列表,产生VT8

9. Distinct:将重复的行从VT8中移除,产生VT9.

10. Order By:将VT9中的行按Order By子句中的列列表排序,生成一个游标(VT10)

11. Top:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回给调用者。




原文发布时间为:2011-02-12


本文作者:vinoYang


本文来自云栖社区合作伙伴CSDN博客,了解相关信息可以关注CSDN博客。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
数据库导入SQL文件:全面解析与操作指南
在数据库管理中,将SQL文件导入数据库是一个常见且重要的操作。无论是迁移数据、恢复备份,还是测试和开发环境搭建,掌握如何正确导入SQL文件都至关重要。本文将详细介绍数据库导入SQL文件的全过程,包括准备工作、操作步骤以及常见问题解决方案,旨在为数据库管理员和开发者提供全面的操作指南。一、准备工作在导
516 0
|
1月前
|
SQL IDE 数据库连接
IntelliJ IDEA处理大文件SQL:性能优势解析
在数据库开发和管理工作中,执行大型SQL文件是一个常见的任务。传统的数据库管理工具如Navicat在处理大型SQL文件时可能会遇到性能瓶颈。而IntelliJ IDEA,作为一个强大的集成开发环境,提供了一些高级功能,使其在执行大文件SQL时表现出色。本文将探讨IntelliJ IDEA在处理大文件SQL时的性能优势,并与Navicat进行比较。
33 4
|
1月前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
2月前
|
SQL 监控 数据库
SQL语句是否都需要解析及其相关技巧和方法
在数据库管理中,SQL(结构化查询语言)语句的使用无处不在,它们负责数据的查询、插入、更新和删除等操作
|
1月前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
30 0
|
2月前
|
SQL 网络安全 数据库
机房电脑下载并安装SQL Server的详细步骤
在机房电脑上下载并安装SQL Server是一个常见的任务,特别是对于学习数据库管理或进行相关项目开发的学生和开发者来说
|
2月前
|
SQL 存储 数据库
SQL语句是否都需要解析及其相关技巧与方法
在数据库管理系统中,SQL(Structured Query Language)语句作为与数据库交互的桥梁,其执行过程往往涉及到一个或多个解析阶段
|
2月前
|
域名解析 网络协议 安全
DNS查询工具简介
DNS查询工具简介
126 4
|
2月前
|
SQL Oracle 关系型数据库
SQL整库导出语录:全面解析与高效执行策略
在数据库管理和维护过程中,整库导出是一项常见的需求,无论是为了备份、迁移还是数据分析,掌握如何高效、准确地导出整个数据库至关重要
|
2月前
|
SQL 安全 Windows
SQL安装程序规则错误解析与解决方案
在安装SQL Server时,用户可能会遇到安装程序规则错误的问题,这些错误通常与系统配置、权限设置、依赖项缺失或版本不兼容等因素有关

推荐镜像

更多