SQL Server执行逻辑查询时,SQL被解析的步骤
以下这段对SQL Server执行逻辑查询时,SQL被解析的步骤。摘自《SQL Server 2005技术内幕 T-SQL查询》。这是一本非常好的讲解SQL Server的书,整个SQL Server 2005技术内幕系列都是,个人强烈推荐。
我一直认为,学好任何一种技术,没有什么比学好它的基础知识和底层原理更重要。如果你相信有“捷径”,那么这就是唯一的“捷径”。了解这些,有助于你更快地掌握技术最本质的核心。
我真希望早点看到那些好书,也希望看到这篇文章的你,能有点收获,多读好书,少走一些弯路。
他山之石可以攻玉!
以上步骤从1-11按顺序被执行,如果没有将跳过相应步骤;
以上每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表仅用于查询器内部使用,对调用者或外部查询不可用,只有最后一步生成的表才会返回给调用者。
逻辑查询处理阶段:
1. From:对From子句中的前两个表(即left_table和right_table)执行笛卡尔积[交叉联结],生成虚拟表VT1.
2. On:对VT1应用On筛选器,只有那些使<join_condition>为真的行才被插入VT2
3. Outer(Join):如果指定了OUTER Join(相对于Cross Join或Inner 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,并返回给调用者。
转载于:https://www.cnblogs.com/wdpp/archive/2011/02/12/2386633.html
SQL Server执行逻辑查询时,SQL被解析的步骤相关推荐
- SQL Server 执行计划(8) - 使用 SQL 执行计划进行查询性能调优
在本系列的前几篇文章(见底部索引)中,我们介绍了SQL 执行计划的多个方面,我们讨论了执行计划是如何在内部生成的,不同类型的计划,主要组件和运算符以及如何阅读和分析使用不同工具生成的计划.在本文中,我 ...
- SQL Server 2008远程连接时SQL数据库不成功怎么办
注:复制于http://www.3lian.com/edu/2013/05-13/69677.html ; 远程连接SQL Server 2008,服务器端和客户端配置 关键设置: 第一步(SQL20 ...
- SQL Server创建复合索引时,复合索引列顺序对查询的性能影响
SQL Server创建复合索引时,复合索引列顺序对查询的性能影响 原文:SQL Server创建复合索引时,复合索引列顺序对查询的性能影响 说说复合索引 写索引的博客太多了,一直不想动手写,有一下两 ...
- 剖析SQL Server执行计划
-->Title: 淺議SQL Server执行计划 -->Author: wufeng4552 -->Date :2009-10-20 15:08:24 前言: 最近溫習了執行計劃 ...
- 引用:初探Sql Server 执行计划及Sql查询优化
引用:初探Sql Server 执行计划及Sql查询优化 原文:引用:初探Sql Server 执行计划及Sql查询优化 初探Sql Server 执行计划及Sql查询优化 收藏 MSSQL优化之-- ...
- SQL Server执行计划那些事儿(3)——书签查找
接下来的文章是记录自己曾经的盲点,同时也透漏了自己的发展历程(可能发展也算不上,只能说是瞎混).当然,一些盲点也在工作和探究过程中慢慢有些眉目,现在也愿意发扬博客园的奉献精神,拿出来和大家分享一下. ...
- 一文搞定 SQL Server 执行计划
导读 数据开发过程中,开发完成的 SQL 发布到生产环境,经常会发生 SQL 执行慢甚至根本无法执行,如何避免这种情况呢?这一篇我们分析一下 SQL Server 的执行计划是如何生成及如何阅读评估执 ...
- SQL Server 执行计划缓存
原文:SQL Server 执行计划缓存 标签:SQL SERVER/MSSQL SERVER/数据库/DBA/内存池/缓冲区 概述 了解执行计划对数据库性能分析很重要,其中涉及到了语句性能分析与存储 ...
- 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
2019独角兽企业重金招聘Python工程师标准>>> 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小 其实本来只想找一个方法能查询一下 数据库 的大小,没 ...
- SQL SERVER 执行计划各字段注释
SET SHOWPLAN_ALL 使 Microsoft® SQL Server™ 不执行 Transact-SQL 语句.相反,SQL Server 返回有关语句执行方式和语句预计所需资源的详细信息 ...
最新文章
- 不想CRUD干到老,就来看看这篇OOM排查的实战案例!
- composer的安装以及laravel项目的生成
- mybatis实战教程(mybatis in action),mybatis入门到精通
- 设定自动获得DNS服务器地址
- mac iTunes启动失败,声称iTunes文件夹被锁定
- C# 中如何一次 catch 多个异常?
- 后端数据成功返回 页面不渲染_如何统计页面访问量,看这一篇就够了
- IT技术人终究要走上管理职位吗?
- python turtle画简单树_大家用Python-turtle库作图画出过哪些漂亮的树哇 ?
- 学习scala03 控制结构
- java float.max value_java – Float.POSITIVE_INFINITY和Float.MAX_VALUE有什么区别?
- 单片机c语言最容易上手的教程,最好的单片机C语言快速入门教程.doc
- 基于Rasa_NLU的微信chatbot
- matlab中的包文件夹管理:‘+’文件夹
- 张钹院士:清华大学AI研究院要孵化人工智能界的BAT
- 南极大冒险/零下八度/南极物语/8只雪橇犬
- 前端面试题总结(js、html、小程序、React、算法、vue 、全栈热门视频资源)
- 重名困扰探究系列之二账户号与登录方式 中
- 程序员的两个主线和四个象限
- 选择google输入法的理由
热门文章
- 变相解决Unidac无法向Postgresql传游标RefCursor的问题
- SGU[222] Little Rooks
- 首张牌照花落“东方购物” 或抬高电视购物门槛
- JEPLUS之APP自定义插件——JEPLUS软件快速开发平台
- 互联网+医疗考验无线部署 飞塔SAA同频部署模式巧妙化解
- Weex小册—从0搭建一个Weex项目
- 2月第4周全球域名商TOP15:万网、DNSPod上榜
- MVC应用程序JsonResult()的练习
- 37.Linux/Unix 系统编程手册(下) -- DAEMON
- 26.Yii 模块(2)