Ich durchsuche den Plan-Cache, suche nach niedrig hängenden Optimierungsfrüchten und bin auf dieses Snippet gestoßen:
Warum sind viele der Kosten über 100% aufgeführt? Sollte das nicht unmöglich sein?
sql-server
sql-server-2012
ssms
execution-plan
Max Vernon
quelle
quelle
Antworten:
Der visuelle Kostenschätzer ist Mist. Diese Art von Sachen passiert die ganze Zeit. Gehen Sie einfach mit den höchsten, die am teuersten sind, und greifen Sie diese zuerst an.
quelle
Ich war auch neugierig, warum manchmal Kosten in Form von 100%, 200%, 300% und mehr angezeigt werden. Nachdem ich die XML-Datei des Abfrageplans analysiert habe, habe ich sie erhalten.
Der Kostenprozentsatz = mein
EstimatedTotalSubtreeCost
/ übergeordneter KnotenEstimatedTotalSubtreeCost
In Ihrem Abfrageplan werden beispielsweise
Clustered Index Insert
Kosten in Höhe von 914% angegeben, um zu verstehen, wie dieser Prozentsatz berechnet wird.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
quelle
0.002/2.18
ist0.000917
(was dasselbe ist wie0.0917%
) und nicht914%
.