我读了这篇文章关于 http://www.scarydba.com/2008/07/01/constant-scan-in-execution-plans/不断扫描但还是不明白什么时候会用到(人们评论作者说他的文章仍然不被理解):
MSDN :
Constant Scan 运算符将一个或多个常量行引入到一个
询问。计算标量运算符通常用于将列添加到行中
由恒定扫描操作员产生。
很不清楚。
例如 :
为什么SELECT TOP 1 GETDATE()
产生:
While select getdate()
什么也不产生。 (在执行计划中)。
我想这与不断的扫描有关。所以 :
问题 :
- 到底什么是持续扫描
- 如果它是常量,为什么需要扫描某些东西,以及
- 为什么
select top 1 getdate()
产生与普通结果不同的结果select getdate()
Because most用于完成查询的运算符是根据一个或多个输入行集和一个或多个输出行集指定的,因此如果您编写需要使用这些运算符之一的查询,那么您最好确保您向该运算符提供的输入是行集。
因此,常量扫描运算符是一种特殊的运算符,它可以接受一个或多个标量输入并生成行集。
它使编写运算符变得更加容易。
为什么select top 1 getdate()
产生与普通结果不同的结果select getdate()
因为您要求使用TOP
操作员。还有TOP
运算符期望有一个输入行集。
为什么我认为关注性能无关紧要:
SET STATISTICS TIME ON
GO
SELECT TOP 1 GETDATE()
GO
SELECT GETDATE()
留言:
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
(1 row(s) affected)
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.
(1 row(s) affected)
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
也就是说,我们甚至无法测量任一语句执行所需的时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)