Przeglądam pamięć podręczną planu, szukam nisko wiszących owoców optymalizacji i natrafiłem na ten fragment:
Dlaczego wiele z wymienionych powyżej kosztów wynosi 100%? Czy nie powinno to być niemożliwe?
sql-server
sql-server-2012
ssms
execution-plan
Max Vernon
źródło
źródło
Odpowiedzi:
Wizualny kalkulator kosztów to bzdura. Takie rzeczy zdarzają się cały czas. Po prostu idź z najwyższymi, które są najdroższe i zaatakuj je jako pierwsze.
źródło
Byłem również ciekawy, dlaczego czasami niektóre koszty są wyświetlane jako 100%, 200%, 300% ... a nawet więcej. Po przeanalizowaniu pliku XML planu zapytań mam go.
Procent kosztów = mój
EstimatedTotalSubtreeCost
/ nadrzędny węzełEstimatedTotalSubtreeCost
Na przykład Twój plan zapytań pokazuje
Clustered Index Insert
koszt 914%, aby zrozumieć, w jaki sposób oblicza ten odsetek,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
źródło
0.002/2.18
jest0.000917
(co jest takie samo jak0.0917%
) i nie914%
.