主页 > 知识库 > T-SQL 查询语句的执行顺序解析

T-SQL 查询语句的执行顺序解析

热门标签:兰州语音外呼系统运营商 成都电话外呼系统一般多少钱 没听见电话机器人帮你接 如何做地图标注图铺 陕西电销外呼系统好用吗 银川高频外呼回拨系统多少钱 最新人工智能电销机器人 数字匠心电销机器人 al智能电话机器人

(5)SELECT (5-2) DISTINCT(5-3)TOP(top_specification>)(5-1) select_list>

(1)FROM (1-J) left_table> join_type> JOIN right_table> on on_predicate>

(2)WHERE where_predicate>

(3)GROUP BY group_by_specification>

(4)HAVING having_predicate>

(6)ORDER BY order_by_list>;

  每一步都会生成一个虚拟表,该虚拟表会作为下一步的输入。这些虚拟表对于调用者是不可用的,只有最后一步生成的虚拟表才会返回给调用者。如果在查询中没有指定某一个子句,则会跳过相应的步骤。接下来就简单地描述一下这些不同的逻辑步骤。

(1)FROM FROM阶段标识出查询的来源表,处理表运算符,每个表运算符也会应用一系列子阶段。例如,在联接运算中涉及的阶段是(1-J1)笛卡尔积、(1-J2)ON筛选器和(1-J3)添加外部行。FROM阶段生成虚拟表VT1。

(1-J1)笛卡尔积 这个阶段对表运算符涉及的两个表执行笛卡尔积(交叉联接),生成虚拟表VT1-J1。

(1-J2)ON筛选器 这个阶段对VT1-J1中的行根据ON子句中出现的谓语进行筛选。只有让该谓语取值为TRUE的行,才能插入VT1-J2中。

(1-J3)添加外部行 如果指定了OUTER JOIN(相对于CROSS JOIN 或 INNER JOIN),则将保留表(preserved table)中没有找到匹配的行,作为外部行添加到VT1-J2中,生成VT1-J3。

(2)WHERE 这个阶段根据在WHERE子句中出现的谓语(where_predicate>)对于VT1中的行进行筛选。只有让谓语计算结果为TRUE的行,才会插入VT2中。

(3)GROUP BY 按照GROUP BY子句中指定的列名列表,将VT2中的行进行分组,生成VT3。

(4)HAVING 根据HAVING子句中出现的谓语(having_predicate>)对VT3中的分组进行筛选。只有让谓语计算结果为TRUE的组,才会插入到VT4。

(5)SELECT 处理SELECT子句中的元素,生成VT5。

(5-1)计算表达式 计算SELECT列表中的表达式,生成VT5-1。

(5-2)DISTINCT 删除VT5-1中的重复行,生成VT5-2。

(5-3)TOP 根据ORDER BYi子句定义的逻辑排序,从VT5-2中选择前面指定数量或百分比的行,生成表VT5-3。

(6)ORDER BY 根据ORDER BY子句中指定的列名列表,对VT5-3中的行进行排序,生成游标VC6。

以上就是一个完整的T-SQL语句的执行过程,希望能给大家帮助。

以上内容摘自《Microsoft SQL Server 2008技术内幕 T-SQL查询》一书。

您可能感兴趣的文章:
  • SQL语句执行顺序图文介绍
  • SQL Select语句完整的执行顺序
  • SQL语句执行顺序详解
  • SQLServer中SELECT语句的执行顺序
  • sql和MySQL的语句执行顺序分析
  • SQL语句的执行原理分析
  • SQL语句执行深入讲解(MySQL架构总览->查询执行流程->SQL解析顺序)

标签:辽源 邢台 朔州 本溪 巴彦淖尔 盐城 宜春 通化

巨人网络通讯声明:本文标题《T-SQL 查询语句的执行顺序解析》,本文关键词  T-SQL,查询,语句,的,执行,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《T-SQL 查询语句的执行顺序解析》相关的同类信息!
  • 本页收集关于T-SQL 查询语句的执行顺序解析的相关信息资讯供网民参考!
  • 推荐文章