Re: Cómo cambio el plan de ejecución de un query

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.

In response to

Responses

Browse pgsql-es-ayuda by date

  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 :(