Calabaza escribió: > El día 3 de octubre de 2009 19:46, Alvaro Herrera > <[email protected]> escribió: > > Manuel Alejandro Estevez Fernandez escribió: > > > Obviamente el problema está aquí: > > >> " -> Index Scan using ventas_detalle_id_sucursal_index on > >> ventas_detalle vd (cost=0.00..3.03 rows=2 width=51) (actual > >> time=0.026..1312.527 rows=1641934 loops=673)" > >> " Index Cond: (id_sucursal = 11)" > > > Hay 6 órdenes de magnitud de error! Eso es muy malo, francamente es la > > primera vez que veo una estimación tan mala. > > ¿Podías indicarnos que significa eso de órdenes de magnitud? > Primera vez que leo eso en la interpretación de un explain analyze. :)
Primer párrafo en http://es.wikipedia.org/wiki/Orden_de_magnitud > > ¿Has hecho ANALYZE alguna vez sobre la tabla? Te sugiero que aumentes > > el tamaño de las estadísticas (default_statistics_size = 100 > > Y otra pregunta más: este valor de 100, > ¿cómo haces para elegir este valor? > Intuyo que está basado en tu experiencia, pero, > > ¿existe alguna relación con la cantidad de registros de la tabla? No, es el tamaño de la lista de valores más comunes y del histograma de distribuciones del resto de los valores. El valor por omisión de este parámetro, 10, es muy pequeño y las estadísticas no son buenas cuando la distribución es desviada de una normal (campana de Gauss) o una distribución uniforme, que en la vida real es bastante común. Con un valor de 100 es mucho más posible que el plan realmente represente la realidad (pero para datos muy extravagantes igual puede ser poco). La desventaja de tener un valor más alto es que ANALYZE tarda un poco más y que el optimizador tiene que procesar más datos y por lo tanto también es un poco más lento, pero el aumento de tiempo es poco y la mejora de los planes es mucha. En 8.4 se aumentó el valor por omisión a 100. -- Alvaro Herrera http://www.amazon.com/gp/registry/3BP7BYG9PUGI8 "Find a bug in a program, and fix it, and the program will work today. Show the program how to find and fix a bug, and the program will work forever" (Oliver Silfridge) -- TIP 2: puedes desuscribirte de todas las listas simultáneamente (envía "unregister TuDirecciónDeCorreo" a [email protected])
