From: | "Silvio Quadri" <silvioq(at)gmail(dot)com> |
---|---|
To: | postgres <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Fwd: Funcion SQL mas lenta que un SQL |
Date: | 2008-03-11 16:05:35 |
Message-ID: | 61dc71dc0803110905s436713b2l9e1f10f84b548e98@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
2008/3/11, Omar Zeballos <ozeballos(at)kantutani(dot)com>:
>
>
> Definitivamente, aún sin hacer las uniones realice la prueba del explain
> plan y es otro plan de ejecucion el que realiza y es mucho mas lento en el
> caso de la funcion, si me permiten les envio los resultados, ahora esto se
> puso mas oscuro para mi, si alguien tiene una explicacion talvez trabajaria
> mejor al definir estos obejtos en la base.
>
> SELECT doc.codalmacen, kar.codproducto, sum(kar.cantidad)as CANTIDAD
> FROM kdx_kardex as kar
> INNER JOIN kdx_documentos doc on doc.seqkdxdocumento = kar.seqkdxdocumento
> WHERE (doc.coddocumento='RCP' or doc.coddocumento='INV')
> AND doc.estado='1'
> AND doc.fecha <=$1
> AND kar.codproducto = coalesce($2,kar.codproducto)
> GROUP BY kar.codproducto, doc.codalmacen
>
> el Analyze con valores fijos me da:
> ...
Sacá el Coalesce que impide que te genere un plan apropiado y dividí
la consulta en dos (vas a tener que usar plpgsql) ...
if isnull( $2)
devolvés el query sin tener el codproducto como where
else
devolvés el query teniendo el codproducto como where
end
y listo.
--
Silvio
From | Date | Subject | |
---|---|---|---|
Next Message | Omar Zeballos | 2008-03-11 17:05:13 | Re: Funcion SQL mas lenta que un SQL |
Previous Message | leonel | 2008-03-11 15:45:50 | Re: postgresql 8.3 y ubuntu 7.10 |