Estou olhando através do cache do plano, procurando por frutos de otimização pendentes e me deparei com este trecho:
Por que muitos dos custos listados estão acima de 100%? Isso não deveria ser impossível?
Estou olhando através do cache do plano, procurando por frutos de otimização pendentes e me deparei com este trecho:
Por que muitos dos custos listados estão acima de 100%? Isso não deveria ser impossível?
Respostas:
O estimador de custo visual é uma porcaria. Esse tipo de coisa acontece o tempo todo. Basta ir com os mais altos, os mais caros e atacar os primeiros.
Também fiquei curioso para saber por que, às vezes, algum custo é exibido como 100%, 200%, 300% ... e até mais. Depois de analisar o arquivo xml do plano de consulta, eu entendi.
A porcentagem de custo = meu EstimatedTotalSubtreeCost
/ nó principalEstimatedTotalSubtreeCost
Por exemplo, os shows do seu plano de consulta Clustered Index Insert
custam 914%, para entender como calcular essa porcentagem,
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
0.002/2.18
é 0.000917
(que é o mesmo que 0.0917%
) e não 914%
.