以下这段对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被解析的步骤相关推荐

  1. SQL Server 执行计划(8) - 使用 SQL 执行计划进行查询性能调优

    在本系列的前几篇文章(见底部索引)中,我们介绍了SQL 执行计划的多个方面,我们讨论了执行计划是如何在内部生成的,不同类型的计划,主要组件和运算符以及如何阅读和分析使用不同工具生成的计划.在本文中,我 ...

  2. SQL Server 2008远程连接时SQL数据库不成功怎么办

    注:复制于http://www.3lian.com/edu/2013/05-13/69677.html ; 远程连接SQL Server 2008,服务器端和客户端配置 关键设置: 第一步(SQL20 ...

  3. SQL Server创建复合索引时,复合索引列顺序对查询的性能影响

    SQL Server创建复合索引时,复合索引列顺序对查询的性能影响 原文:SQL Server创建复合索引时,复合索引列顺序对查询的性能影响 说说复合索引 写索引的博客太多了,一直不想动手写,有一下两 ...

  4. 剖析SQL Server执行计划

    -->Title: 淺議SQL Server执行计划 -->Author: wufeng4552 -->Date :2009-10-20 15:08:24 前言: 最近溫習了執行計劃 ...

  5. 引用:初探Sql Server 执行计划及Sql查询优化

    引用:初探Sql Server 执行计划及Sql查询优化 原文:引用:初探Sql Server 执行计划及Sql查询优化 初探Sql Server 执行计划及Sql查询优化 收藏 MSSQL优化之-- ...

  6. SQL Server执行计划那些事儿(3)——书签查找

    接下来的文章是记录自己曾经的盲点,同时也透漏了自己的发展历程(可能发展也算不上,只能说是瞎混).当然,一些盲点也在工作和探究过程中慢慢有些眉目,现在也愿意发扬博客园的奉献精神,拿出来和大家分享一下. ...

  7. 一文搞定 SQL Server 执行计划

    导读 数据开发过程中,开发完成的 SQL 发布到生产环境,经常会发生 SQL 执行慢甚至根本无法执行,如何避免这种情况呢?这一篇我们分析一下 SQL Server 的执行计划是如何生成及如何阅读评估执 ...

  8. SQL Server 执行计划缓存

    原文:SQL Server 执行计划缓存 标签:SQL SERVER/MSSQL SERVER/数据库/DBA/内存池/缓冲区 概述 了解执行计划对数据库性能分析很重要,其中涉及到了语句性能分析与存储 ...

  9. 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小

    2019独角兽企业重金招聘Python工程师标准>>> 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小 其实本来只想找一个方法能查询一下 数据库 的大小,没 ...

  10. SQL SERVER 执行计划各字段注释

    SET SHOWPLAN_ALL 使 Microsoft® SQL Server™ 不执行 Transact-SQL 语句.相反,SQL Server 返回有关语句执行方式和语句预计所需资源的详细信息 ...

最新文章

  1. 不想CRUD干到老,就来看看这篇OOM排查的实战案例!
  2. composer的安装以及laravel项目的生成
  3. mybatis实战教程(mybatis in action),mybatis入门到精通
  4. 设定自动获得DNS服务器地址
  5. mac iTunes启动失败,声称iTunes文件夹被锁定
  6. C# 中如何一次 catch 多个异常?
  7. 后端数据成功返回 页面不渲染_如何统计页面访问量,看这一篇就够了
  8. IT技术人终究要走上管理职位吗?
  9. python turtle画简单树_大家用Python-turtle库作图画出过哪些漂亮的树哇 ?
  10. 学习scala03 控制结构
  11. java float.max value_java – Float.POSITIVE_INFINITY和Float.MAX_VALUE有什么区别?
  12. 单片机c语言最容易上手的教程,最好的单片机C语言快速入门教程.doc
  13. 基于Rasa_NLU的微信chatbot
  14. matlab中的包文件夹管理:‘+’文件夹
  15. 张钹院士:清华大学AI研究院要孵化人工智能界的BAT
  16. 南极大冒险/零下八度/南极物语/8只雪橇犬
  17. 前端面试题总结(js、html、小程序、React、算法、vue 、全栈热门视频资源)
  18. 重名困扰探究系列之二账户号与登录方式 中
  19. 程序员的两个主线和四个象限
  20. 选择google输入法的理由

热门文章

  1. 变相解决Unidac无法向Postgresql传游标RefCursor的问题
  2. SGU[222] Little Rooks
  3. 首张牌照花落“东方购物” 或抬高电视购物门槛
  4. JEPLUS之APP自定义插件——JEPLUS软件快速开发平台
  5. 互联网+医疗考验无线部署 飞塔SAA同频部署模式巧妙化解
  6. Weex小册—从0搭建一个Weex项目
  7. 2月第4周全球域名商TOP15:万网、DNSPod上榜
  8. MVC应用程序JsonResult()的练习
  9. 37.Linux/Unix 系统编程手册(下) -- DAEMON
  10. 26.Yii 模块(2)