WEB开发网
开发学院数据库MSSQL Server 详解用TSQL在SQL Server实现物理查询数据流 阅读

详解用TSQL在SQL Server实现物理查询数据流

 2009-04-14 10:27:40 来源:WEB开发网   
核心提示: 文本形式的执行计划输出:|--Sort(ORDERBY:([Expr1004]ASC))|--Filter(WHERE:([Expr1004]>(5)))|--ComputeScalar(DEFINE:([Expr1004]=CASEWHEN[Expr1004]ISNULLTHEN(

文本形式的执行计划输出:

|--Sort(ORDER BY:([Expr1004] ASC))

|--Filter(WHERE:([Expr1004]>(5)))

|--Compute Scalar(DEFINE:([Expr1004]=CASE WHEN [Expr1004] IS NULL THEN (0) ELSE [Expr1004] END))

|--Nested Loops(Left Outer Join, OUTER REFERENCES:([C].[CustomerID]))

|--Index Seek(OBJECT:([Northwind].[dbo].[Customers].[City] AS [C]),

SEEK:([C].[City]=N'London') ORDERED FORWARD)

|--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(int,[Expr1009],0)))

|--Stream Aggregate(DEFINE:([Expr1009]=Count(*)))

|--Index Seek(OBJECT:([Northwind].[dbo].[Orders].[CustomersOrders] AS [O]), SEEK:([O].

计划中的分支是交叉执行的。该示例中SQL Server交替执行嵌套循环的两个分支。

灰色箭头表示数据流,箭头的粗细表示查询优化器估计通过该连接传递的行数。

引擎先对Customers表执行索引查找,他将选择来自London的第一个消费者。可以查看此部操作的详细信息,如下图。

详解用TSQL在SQL Server实现物理查询数据流

可以看到此步的查找谓词的前缀为:

[Northwind].[dbo].[Customers].[City] = N'London

被选择的行被传递到嵌套循环运算符,嵌套循环则会开始进行内层循环的运算。内层循环由计算标量、流聚合、索引查找组成。

详解用TSQL在SQL Server实现物理查询数据流

Tags:详解 TSQL SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接