此SQL Server计划中的成本百分比是否出于合理原因超过100%?


14

我正在浏览计划缓存,寻找低调的优化成果,并遇到了以下片段:

在此处输入图片说明

为什么列出的许多费用超过100%?那不是不可能吗?


我什至从估算的计划中看到的费用高达1%。仅使用实际成本,应该会更好。
玛丽安

5
因为SQL Server的数学很混乱。获取我们的免费计划浏览器;我们没有这个问题。
亚伦·伯特兰

我喜欢Aaron的SQL Sentry Plan Explorer-我已经使用了一段时间了。我想看看专业版能做什么!
Max Vernon

Answers:


13

视觉成本估算器很糟糕。这种事情一直在发生。只选择最高的是最昂贵的,然后首先攻击那些。


您是否曾经在SQL Server的早期版本中看到过?就我而言,例如,我从未在SS 2008R2上注意到它。
KookieMonster 2013年

5
我从SQL 2000开始就已经看到了它。据我所知,这只是SSMS(和EM)中的一个错误,它在进行数学计算以求出百分比时。
mrdenny

2

我也很好奇为什么有时某些成本显示为100%,200%,300%...甚至更多。分析查询计划的xml文件后,我明白了。

成本百分比=我EstimatedTotalSubtreeCost/父节点的EstimatedTotalSubtreeCost

例如,您的查询计划显示Clustered Index Insert花费914%,以了解其如何计算此百分比, 1. Move mouse to `Clustered Index Insert` to show popup, you can see the cost `EstimatedTotalSubtreeCost`, e.g, 0.2 2. Move mouse to this node's parent node `COND WITH QUERY`, check the popup to get `EstimatedTotalSubtreeCost`, e.g, 0.0218818 3. Calculate 0.2/0.0218818 = 914%, this is the cost percentage displayed in `Clustered Index Insert` popup


1
0.002/2.180.000917(与相同0.0917%)而不是914%
ypercubeᵀᴹ

感谢您的评论。我将修改答案。毕竟,这只是显示如何计算百分比的示例。
osexp2003 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.