【问题标题】:Comparision between A select statement and Multiple select statment that act as batchA select 语句和作为批处理的 Multiple select 语句之间的比较
【发布时间】:2011-03-28 18:28:08
【问题描述】:

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

我想写一个 select 而不是几个 Select 并想比较它们的 EXECUTION PLAN(SP 和一个 Select 语句)。

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

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

但是为什么这个执行计划的所有语句的总成本不是100%呢?

Execution plan

谢谢

【问题讨论】:

  • 无法访问您的执行计划,您的总数是大于还是小于 100%?差多少?
  • 我也无法访问您的执行计划,如果我要创建一个“免费”rapidshare 帐户来访问它,我会被诅咒的。很可能您有一个帐户并且不认为这是一个问题,但您可能会解雇很多志愿者来提供帮助。
  • @Lieven:我又改了,请试试
  • 抱歉没有运气。 1.大量的广告。 2.立即下载 3.等待 30 秒。 4.页面底部的下载链接 5.将链接粘贴到浏览器中 6 转到 1.很好地提醒自己为什么我讨厌这类网站

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


【解决方案1】:

如果你想比较两个版本的逻辑,那么脚本如下:

Exec <storedProc>

Select <data> From <tables>

会让你做的。是的,执行计划将向您显示存储过程中的所有查询。查找在 SP 之外发生的查询的计划。如果他们给出的总成本 > 50%,那么 SP 表现更好。

附带说明,如果您的 SP 采用参数,请确保您比较一系列参数值的执行计划。

【讨论】:

  • 我更改了执行计划的链接,您现在可以下载它
【解决方案2】:

UNION 是几个选择语句。您实际上是在说“向我展示此查询的结果,加入此查询的结果,加入此查询的结果......”SQL Server 将如何从这些查询中获取结果而不执行它们?

【讨论】:

  • 我希望将 SP 的执行成本作为一个单位。而不是在 sp 中花费所有选择
  • @Nima - 然后将其重写为一个 SELECT 语句。如果您有多个SELECTs,它就不是一个单元。 SQL Server 必须独立执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-08
  • 2019-08-30
  • 2013-07-19
  • 1970-01-01
  • 2014-02-15
相关资源
最近更新 更多