Sto cercando nella cache del piano, cercando un frutto di ottimizzazione a basso impatto e mi sono imbattuto in questo frammento:
Perché molti dei costi sono elencati al di sopra del 100%? Non dovrebbe essere impossibile?
Sto cercando nella cache del piano, cercando un frutto di ottimizzazione a basso impatto e mi sono imbattuto in questo frammento:
Perché molti dei costi sono elencati al di sopra del 100%? Non dovrebbe essere impossibile?
Risposte:
Lo stimatore visivo dei costi è una schifezza. Questo genere di cose succede sempre. Basta andare con i più alti sono i più costosi e attaccarli per primi.
Ero anche curioso di sapere perché a volte alcuni costi vengono visualizzati come 100%, 200%, 300% ... e anche di più. Dopo aver analizzato il file xml del piano di query, l'ho capito.
La percentuale di costo = EstimatedTotalSubtreeCost
nodo my / parentEstimatedTotalSubtreeCost
Ad esempio, il tuo piano di query mostra Clustered Index Insert
un costo del 914%, per capire come calcola questa percentuale,
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
(che è lo stesso di 0.0917%
) e non 914%
.