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?
sql-server
sql-server-2012
ssms
execution-plan
Max Vernon
fonte
fonte
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.
fonte
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
fonte
0.002/2.18
é0.000917
(que é o mesmo que0.0917%
) e não914%
.