From: | "Carlos Beltrán V(dot)" <cbeltran(at)roldan(dot)net> |
---|---|
To: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
Cc: | ListaPostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Cómo cambio el plan de ejecución de un query |
Date: | 2008-08-30 01:41:05 |
Message-ID: | 48B8A531.1080901@roldan.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Alvaro Herrera wrote:
> "Carlos Beltrán V." escribió:
>
>
>> Con el actual estado de la base de datos y el ejemplo antes descrito un
>> EXPLAIN ANALYZE corrido en las dos versiones (8.2.6 y 8.3.3) da una
>> diferencia abismal ya que en 8.3.3 entra a evaluar la función PL por
>> cada linea de la tabla declaraciones_importacion.
>>
>
> Puedes cambiar el COST de la funcion para que intente evaluarla menos
> veces. (Nota que si la funcion es "volatile" esto no puede hacerse).
>
> Si eso no resulta, prueba poniendo un OFFSET 0 en el subselect, que
> actua como una barrera de optimizacion (para que no aplane el
> subselect).
>
Alvaro. Gracias por tu respuesta. En efecto con tu sola sugerencia del
offset funcionó así:
SELECT pd.declaraciones_importacion_id
FROM
(SELECT
di.declaraciones_importacion_id
FROM
declaraciones_importacion di,
documentos d,
documentos_do dd
WHERE
di.documentos_id = d.documentos_id AND
d.documentos_id = dd.documentos_id AND
dd.dos_id = 180000000003039842 OFFSET 0) AS pd
WHERE es_declaracion_modalidad_temporal(pd.declaraciones_importacion_id)
Alvaro, como realmente los selects de este tipo, se están usando en
muchos scripts y son planos, ¿debo agruparlos como está el ejemplo o
podría existir otra opción?
Y por último ¿Cuál fue la motivación para que implementaran este nuevo
comportamiento en la versión 8.3.3?
Nuevamente Gracias.
From | Date | Subject | |
---|---|---|---|
Next Message | Oswaldo Hernández | 2008-08-30 10:27:13 | Array de dominios |
Previous Message | German Salinas | 2008-08-29 23:59:20 | Re: OT: MySQL derrota a PostgreSQL :( |