Являются ли проценты затрат в этом плане SQL Server более 100% по уважительной причине?

13

Я просматриваю кэш плана, ищу низко висящие фрукты оптимизации и наткнулся на этот фрагмент:

введите описание изображения здесь

Почему многие расходы указаны выше 100%? Разве это не может быть невозможно?

Макс Вернон
источник
Я даже видел расходы до 1 млн.% От предполагаемого плана. Просто используйте реальную стоимость, она должна быть лучше.
Marian
5
Потому что математика SQL Server испорчена. Возьмите наш бесплатный Plan Explorer ; у нас нет этой проблемы.
Аарон Бертран
Я люблю SQL Sentry Plan Explorer, Аарон - я уже давно его использую. Я хочу посмотреть, что делает про версия!
Макс Вернон

Ответы:

12

Визуальная оценка стоимости - это дерьмо. Подобные вещи случаются постоянно. Просто выберите самые дорогие и атакуйте их первыми.

mrdenny
источник
Вы когда-нибудь видели это в предыдущих версиях SQL Server? Насколько я понимаю, я никогда не замечал этого на SS 2008R2, например.
KookieMonster
5
Я видел это все время назад к SQL 2000. Насколько я знаю, это просто ошибка в SSMS (и EM), когда он выполняет математические расчеты, чтобы вычислить проценты.
Мрденный
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

osexp2003
источник
1
0.002/2.18есть 0.000917(что так же как 0.0917%) а нет 914%.
ypercubeᵀᴹ
Спасибо за ваш комментарий. Я изменю свой ответ. В конце концов, это просто пример, чтобы показать, как рассчитать процент.
osexp2003