Je regarde dans le cache du plan, à la recherche de fruits d'optimisation bas et suis tombé sur cet extrait:
Pourquoi plusieurs des coûts énumérés ci-dessus sont-ils à 100%? Cela ne devrait-il pas être impossible?
sql-server
sql-server-2012
ssms
execution-plan
Max Vernon
la source
la source
Réponses:
L'estimateur visuel des coûts est de la merde. Ce genre de choses arrive tout le temps. Il suffit d'aller avec les plus élevés qui sont les plus chers et d'attaquer ceux-là en premier.
la source
J'étais également curieux de savoir pourquoi parfois certains coûts sont affichés à 100%, 200%, 300% ... et même plus. Après avoir analysé le fichier xml du plan de requête, je l'ai eu.
Le pourcentage de coût = mon
EstimatedTotalSubtreeCost
nœud / parentEstimatedTotalSubtreeCost
Par exemple, votre plan de requête affiche
Clustered Index Insert
un coût de 914%, pour comprendre comment il calcule ce pourcentage,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
la source
0.002/2.18
est0.000917
(qui est le même que0.0917%
) et non914%
.