0

我有一个存储过程,它包含一些返回它们的联合结果的Select语句。作为批处理的选择语句和多选择语句之间的比较

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

问题是运行这个twe语句时(SP和Select)sp中的所有select语句都有它们的执行计划。我想要将SP的执行计划作为UNIT。

我还有一个问题。考虑附加在这篇文章上的执行计划。是所有语句的执行计划的总和成本必须是100%吗?

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

Execution plan

感谢

+2

无法访问您的执行计划,您的总计是否大于或小于100%?它有多少? – Rozwel 2011-03-28 19:24:03

+1

我无法访问您的执行计划,如果我将创建一个“免费”的RapidShare账户来实现它,我会被诅咒。很可能你有一个帐户,并不认为这是一个问题,但你可能会解雇很多志愿者来帮助。 – 2011-03-28 19:54:58

+0

@Lieven:我再次改变它。请尝试 – Arian 2011-03-28 20:07:09

回答

0

如果你正在尝试沿线的比较逻辑的两个版本,然后脚本:

Exec <storedProc> 

Select <data> From <tables> 

会让你做到这一点。是的执行计划会显示存储过程中的所有查询。查找SP之外发生的查询计划。如果他们给总成本> 50%,那么SP表现更好。请注意,如果您的SP采用参数,请确保您在一系列参数值范围内比较执行计划。

+0

我更改执行计划的链接,现在就可以下载它 – Arian 2011-03-28 19:42:10

0

一个UNION是几个SELECT语句。你实质上是在说:“向我展示这个查询的结果,加入这个查询的结果,并加入这个查询的结果......”SQL Server如何从这些查询中得到结果而不执行它们?

+0

我希望以SP为单位进行成本执行。不花费所有选择sp – Arian 2011-03-28 18:40:59

+0

@Nima内部 - 然后将其重写为一个“SELECT”语句。如果你有多个'SELECT',它不是一个单元。 SQL Server必须独立执行它。 – JNK 2011-03-28 18:43:33