我正在努力提高我的一项要求。 我的请求是由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如何计算这个“查询成本”吗? (我开始相信它是随机的或类似的东西)。
答案 0 :(得分:3)
查询成本是CPU周期,内存和磁盘IO组合的无单位度量。
通常,您会看到成本更高但执行时间更短的运营商或计划。
主要是由于上述三个组件的速度不同。 CPU和内存相当快,并且作为瓶颈也不常见。如果您可以将一些压力从磁盘IO子系统转移到CPU,则查询可能会显示更高的成本,但应该执行得更快。
如果您想获得有关特定查询执行的更多详细信息,可以使用:
SET STATISTICS IO ON
SET STATISTICS TIME ON
这将输出有关CPU周期,计划创建和页面读取(从磁盘和内存)到消息选项卡的详细信息。