Re: Agilizar consultas sobre fechas

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Calabaza <calalinux(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Agilizar consultas sobre fechas
Date: 2009-10-05 15:15:47
Message-ID: 20091005151547.GA5176@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Calabaza escribió:
> El día 3 de octubre de 2009 19:46, Alvaro Herrera
> <alvherre(at)alvh(dot)no-ip(dot)org> 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)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Emanuel Calvo Franco 2009-10-05 15:25:06 Re: Trigger para poner a mayusculas
Previous Message Javier Fritz Alsite 2009-10-05 13:58:28 Re: Sequencias