Skip site navigation (1) Skip section navigation (2)

Re: Funcion SQL mas lenta que un SQL

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Omar Zeballos <ozeballos(at)kantutani(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Funcion SQL mas lenta que un SQL
Date: 2008-03-11 15:45:29
Message-ID: 20080311154529.GQ9116@alvh.no-ip.org (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Omar Zeballos escribió:
> 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

Hmm, ¿por qué tienes el COALESCE aquí?  Entiendo que es para poder pasar
un NULL a la función y hacer que retorne todos los valores.  Pero
podrías tratar qué sucede si lo sacas, es decir si fuerzas a que la
función siempre reciba un parámetro $2 no nulo?

En todo caso, todo depende de qué tan pesimista se pueda ser para
optimizar las cláusulas como fecha <= $1 y codproducto=$2.  En el peor
de los casos puede tocar que sea un valor de los más comunes, y si tiene
que forzar un plan menos óptimo para satisfacer esos casos, lo hará.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

pgsql-es-ayuda by date

Next:From: leonelDate: 2008-03-11 15:45:50
Subject: Re: postgresql 8.3 y ubuntu 7.10
Previous:From: Alvaro HerreraDate: 2008-03-11 15:36:37
Subject: Re: Demora mi consulta

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group