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.
--
TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá leerlo