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?
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?
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.
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
0.002/2.18
est 0.000917
(qui est le même que 0.0917%
) et non 914%
.