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

From: "Carlos Beltrán V(dot)" <cbeltran(at)roldan(dot)net>
To: ListaPostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Cómo cambio el plan de ejecución de un query
Date: 2008-08-28 17:15:26
Message-ID: 48B6DD2E.2030507@roldan.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenos días compañeros.

Ahora que estoy haciendo pruebas en la versión 8.3.3 para migrar, me
encuentro con este comportamiento.

El planeador no ejecuta primero el filtro correspondiente al SELECT
interno, y por lo tanto la complejidad del SELECT total sube por número
de líneas al count() de la tabla más compleja que es la primera que
aparece en el SELECT interno.

Cabe aclarar que este comportamiento era diferente en las versiones
8.2.6 y anteriores.

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) AS pd
WHERE es_declaracion_modalidad_temporal(pd.declaraciones_importacion_id)

Cómo se nota la última condición que deseo que se evalúe es una Plpgsql
y esas llamadas sólo deben ser hechas cuando ya haya sido filtrado por
el SELECT interno.

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.

De antemano gracias por las luces que me puedan brindar en la solución
de esta inquietud.

Carlos.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2008-08-28 17:35:13 Re: Cómo cambio el plan de ejecución de un query
Previous Message Alejandro D. Burne 2008-08-28 17:02:12 Re: Problemas al concatenar