¿Los porcentajes de costo en este plan de SQL Server son superiores al 100% por una razón válida?

13

Estoy mirando a través del caché del plan, buscando fruta de optimización de bajo perfil y encontré este fragmento:

ingrese la descripción de la imagen aquí

¿Por qué muchos de los costos están por encima del 100%? ¿No debería ser eso imposible?

Max Vernon
fuente
Incluso vi costos de hasta 1% del plan estimado. Simplemente use el costo real, debería ser mejor.
Marian
55
Porque las matemáticas de SQL Server están en mal estado. Tome nuestro Plan Explorer gratuito ; No tenemos este problema.
Aaron Bertrand
Me encanta el explorador de planes SQL Sentry, Aaron. Lo he estado usando por un tiempo. ¡Quiero ver qué hace la versión pro!
Max Vernon

Respuestas:

12

El estimador visual de costos es una mierda. Este tipo de cosas sucede todo el tiempo. Simplemente ir con los más altos son los más caros y atacar a los primeros.

mrdenny
fuente
¿Alguna vez has visto esto con versiones anteriores de SQL Server? Por lo que a mí respecta, nunca lo he notado en SS 2008R2, por ejemplo.
KookieMonster
55
Lo he visto desde SQL 2000. Hasta donde sé, es solo un error en SSMS (y EM) cuando hace los cálculos para calcular los porcentajes.
mrdenny
2

También tenía curiosidad acerca de por qué a veces algunos costos se muestran como 100%, 200%, 300% ... e incluso más. Después de analizar el archivo xml del plan de consulta, lo obtuve.

El porcentaje de costo = mi EstimatedTotalSubtreeCost/ nodo principalEstimatedTotalSubtreeCost

Por ejemplo, su plan de consulta muestra Clustered Index Insertun costo de 914%, para comprender cómo calcula este porcentaje, 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

osexp2003
fuente
1
0.002/2.18es 0.000917(que es lo mismo que 0.0917%) y no 914%.
ypercubeᵀᴹ
gracias por tu comentario. Modificaré mi respuesta Después de todo, es solo una muestra para mostrar cómo calcular el porcentaje.
osexp2003