Inside Microsoft SQL Server 2005:T-SQL Querying (查询处理的数据流程|第二章)

本文深入探讨了在SQL Server 2005中查询处理的流程,包括语法解析、连接、编译、优化和执行。详细介绍了Algebrizer的作用,如操作挤压、名称解析和类型推导。此外,还阐述了基于开销的优化器如何选择执行计划,并提到了查询计划的不同展示形式,如图形、文字和XML。最后,讨论了查询缓存和计划更新的概念。
摘要由CSDN通过智能技术生成

在SQL Server Management Studio(SSMS)中查询

USE Northwind;

SELECT C.CustomerID, COUNT(O.OrderID) AS NumOrders
FROM dbo.Customers AS C
  LEFT OUTER JOIN dbo.Orders AS O
    ON C.CustomerID = O.CustomerID
WHERE C.City = 'London'
GROUP BY C.CustomerID
HAVING COUNT(O.OrderID) > 5
ORDER BY NumOrders;
点击包含实际执行计划(Include Actual Exevution Plan),下图最右侧
image
操作完成后可以得到如下的流程图

 

如上例所示,SQL语句执行时,SQL Server Analyer(2005后合并入SQL Server Management Studio中)会根据语句自动的优化执行计划。通常,一个批处理可以是多个SQL语句组成的一个单位。(存储过程就是个很好的例子,又如GO语句会将SQL语句自动切割)

SQL语句处理过程包括几步:语法解析、连接、编译与执行。可以在执行前编译或者编译后存在缓存中等待下一次执行,所以用户常常不能感觉到编译与执行的存在。优化器会考虑到系统CPU个数、内存总量,主要优化过程如下

image

语法解析包含检查SQL语句的语法错误,检查实体名称等;连接用于确认SQL语句中的实体是否可以被访问;优化只优化那个可能存在多种途径访问数据库的语法。

连接器(Algebrizer)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值