作为批处理的select语句和Multiple select语句之间的比较

时间:2011-03-28 18:28:09

标签: sql-server sql-server-2005 sql-server-2008 sql-execution-plan

我有一个存储过程,其中包含一些返回它们的联合结果的Select语句。

我认为并编写一个选择而不是几个选择并想要比较它们的执行计划(SP和一个Select语句)。

问题是当运行这个twe语句(SP和Select)时,sp中的所有select语句都有自己的执行计划。我希望将SP的执行计划作为UNIT。

我有另一个问题。考虑附加到这篇文章的执行计划。所有声明的执行计划的总和成本必须是100%?

但是为什么这个执行计划的所有陈述的总和成本不是100%?

Execution plan

感谢

2 个答案:

答案 0 :(得分:0)

UNION是几个select语句。您实质上是在说“向我显示此查询的结果,与此查询的结果一起加入此查询的结果...”SQL Server如何在不执行这些查询的情况下从这些查询中获取结果?

答案 1 :(得分:0)

如果您正在尝试比较两个版本的逻辑,那么脚本就是:

Exec <storedProc>

Select <data> From <tables>

会让你这样做。是的,执行计划将显示存储过程中的所有查询。查找在SP之外发生的查询的计划。如果他们给出总费用&gt; 50%然后SP表现更好。

作为旁注,如果您的SP采用参数,请确保比较一系列参数值的执行计划。