Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2008中如何执行查询_Sql_Sql Server 2005_Sql Server 2008 - Fatal编程技术网

SQL Server 2008中如何执行查询

SQL Server 2008中如何执行查询,sql,sql-server-2005,sql-server-2008,Sql,Sql Server 2005,Sql Server 2008,我正在使用SQLServer2008,非常想知道引擎如何执行查询 假设我运行以下查询: select * from <table1> with(nolock) select*from with(nolock) 或与连接相同: select * from <table1> a with(nolock) join <table2> b with(nolock) on a.<column1> = b.<column1> where &

我正在使用SQLServer2008,非常想知道引擎如何执行查询

假设我运行以下查询:

select * from <table1> with(nolock)
select*from with(nolock)
或与连接相同:

select * from <table1> a with(nolock) 
join <table2> b with(nolock) on a.<column1> = b.<column1> 
where <some condition>
从带有(nolock)的列表中选择*
用a上的(nolock)连接b.=B
哪里
查询在幕后是如何工作的?

有没有办法查看为执行和显示结果而执行的实际步骤?

数据库引擎分析查询并选择在当前条件下检索请求数据的最佳方式


请参阅。

数据库引擎分析查询并选择在当前条件下检索请求数据的最佳方式


请参见清单1-1逻辑查询处理步骤编号

(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> | (1-A) <left_table> <apply_type> APPLY <right_table_expression> AS <alias> | (1-P) <left_table> PIVOT(<pivot_specification>) AS <alias>| (1-U) <left_table> UNPIVOT(<unpivot_specification>) AS <alias> (2) WHERE <where_predicate> (3) GROUP BY <group_by_specification> (4) HAVING <having_predicate> (6) ORDER BY <order_by_list>;
(5)选择(5-2)不同的(5-3)TOP()(5-1)(1)从(1-J)连接到|(1-A)应用为|(1-P)PIVOT()作为|(1-U)UNPIVOT()作为(2),其中(3)分组方式(4)具有(6)排序方式;
逻辑查询处理阶段简介

■ (1) 从FROM阶段识别查询的源表和过程表 接线员。每个表运算符应用一系列子阶段。例如,阶段 连接涉及(1-J1)笛卡尔积,(1-J2)在过滤器上,(1-J3)添加外部行。 FROM阶段生成虚拟表VT1

■ (1-J1)笛卡尔积此阶段在 表格运算符中涉及的两个表格,生成VT1-J1

■ (1-J2)在过滤器上,此阶段根据以下谓词过滤VT1-J1中的行: 出现在ON子句()中。仅对谓词求值的行 若为真,则将其插入VT1-J2。 (1-J3)如果指定了外部连接,则添加外部行(与交叉连接或 内部联接),保留表中的行或未找到匹配项的表中的行 作为外部行添加到VT1-J2的行中,生成VT1-J3

■ (2) 其中,此阶段根据中出现的谓词过滤VT1中的行 WHERE子句()。仅谓词计算为的行 将TRUE插入VT2

■ (3) GROUP BY此阶段根据列分组排列VT2中的行 列出GROUP BY子句中指定的,生成VT3。最终会有一个 每组的结果行

■ (4) 此阶段根据以下谓词过滤VT3中的组: 出现在HAVING子句()中。仅适用于 谓词的计算结果为TRUE,并插入到VT4中

■ (5) 选择此阶段处理SELECT子句中的元素,生成VT5

■ (5-1)计算表达式此阶段计算选择列表中的表达式, 生成VT5-1

■ (5-2)DISTINCT此阶段从VT5-1中删除重复行,生成VT5-2

■ (5-3)顶部此阶段过滤指定的顶部行数或百分比 VT5-2基于ORDER by子句定义的逻辑顺序,生成 表VT5-3

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

清单1-1逻辑查询处理步骤编号

(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> | (1-A) <left_table> <apply_type> APPLY <right_table_expression> AS <alias> | (1-P) <left_table> PIVOT(<pivot_specification>) AS <alias>| (1-U) <left_table> UNPIVOT(<unpivot_specification>) AS <alias> (2) WHERE <where_predicate> (3) GROUP BY <group_by_specification> (4) HAVING <having_predicate> (6) ORDER BY <order_by_list>;
(5)选择(5-2)不同的(5-3)TOP()(5-1)(1)从(1-J)连接到|(1-A)应用为|(1-P)PIVOT()作为|(1-U)UNPIVOT()作为(2),其中(3)分组方式(4)具有(6)排序方式;
逻辑查询处理阶段简介

■ (1) 从FROM阶段识别查询的源表和过程表 接线员。每个表运算符应用一系列子阶段。例如,阶段 连接涉及(1-J1)笛卡尔积,(1-J2)在过滤器上,(1-J3)添加外部行。 FROM阶段生成虚拟表VT1

■ (1-J1)笛卡尔积此阶段在 表格运算符中涉及的两个表格,生成VT1-J1

■ (1-J2)在过滤器上,此阶段根据以下谓词过滤VT1-J1中的行: 出现在ON子句()中。仅对谓词求值的行 若为真,则将其插入VT1-J2。 (1-J3)如果指定了外部连接,则添加外部行(与交叉连接或 内部联接),保留表中的行或未找到匹配项的表中的行 作为外部行添加到VT1-J2的行中,生成VT1-J3

■ (2) 其中,此阶段根据中出现的谓词过滤VT1中的行 WHERE子句()。仅谓词计算为的行 将TRUE插入VT2

■ (3) GROUP BY此阶段根据列分组排列VT2中的行 列出GROUP BY子句中指定的,生成VT3。最终会有一个 每组的结果行

■ (4) 此阶段根据以下谓词过滤VT3中的组: 出现在HAVING子句()中。仅适用于 谓词的计算结果为TRUE,并插入到VT4中

■ (5) 选择此阶段处理SELECT子句中的元素,生成VT5

■ (5-1)计算表达式此阶段计算选择列表中的表达式, 生成VT5-1

■ (5-2)DISTINCT此阶段从VT5-1中删除重复行,生成VT5-2

■ (5-3)顶部此阶段过滤指定的顶部行数或百分比 VT5-2基于ORDER by子句定义的逻辑顺序,生成 表VT5-3

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

这是一个非常模糊的问题,您能更详细地解释一下您想问什么吗?你说的流动是什么意思?这是指接口流还是实际的后端机器编码执行?关于这个主题有很多书。如果你有具体问题,请提问。如果你