如何在执行计划中处理“查询成本”?

时间:2011-08-18 15:25:29

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

我正在努力提高我的一项要求。 我的请求是由10个不同的选择。

实际的生产查询需要36秒才能执行。

如果我显示执行计划,对于一个选择我的查询成本为18%。

因此,我使用xml查询(http://www.codeproject.com/KB/database/InClauseAndSQLServer.aspx)更改了一个in子句(在此select中)。

新查询现在需要28秒才能执行,但是sql server告诉我上面的select有一个100%的查询成本。这是我做的唯一改变。任何查询都没有并行性。

生产: 36秒,我的选择是18%(其他人是10%)。

新版本: 28秒,我的选择是100%(其他是0%)。

你知道sql server如何计算这个“查询成本”吗? (我开始相信它是随机的或类似的东西)。

1 个答案:

答案 0 :(得分:3)

查询成本是CPU周期,内存和磁盘IO组合的无单位度量。

通常,您会看到成本更高但执行时间更短的运营商或计划。

主要是由于上述三个组件的速度不同。 CPU和内存相当快,并且作为瓶颈也不常见。如果您可以将一些压力从磁盘IO子系统转移到CPU,则查询可能会显示更高的成本,但应该执行得更快。

如果您想获得有关特定查询执行的更多详细信息,可以使用:

SET STATISTICS IO ON
SET STATISTICS TIME ON

这将输出有关CPU周期,计划创建和页面读取(从磁盘和内存)到消息选项卡的详细信息。