Re: Funcion SQL mas lenta que un SQL

From: "Omar Zeballos" <ozeballos(at)kantutani(dot)com>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Funcion SQL mas lenta que un SQL
Date: 2008-03-11 17:05:13
Message-ID: 238701c8839a$134c2a20$1600a8c0@jefeproyectos
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alvaro, Silvio,
Sus sugerencias si funcionan y se vuelve optimo, muchas gracias, lo que
hice fue crear una funcion overload donde no paso el parametro de producto y
todo bien, esto para tener el caso de hacerlo por producto o todos.
Pero debemos considerar que hay una diferencia en el motor al ejecutar la
sentencia sola y utilizando una funcion. Pues quitando el colease ya no es
la misma sentencia que la original no se olviden que como sentencia sola
interpreta bien el colease es decir esta optimizada.

Un abrazo y Gracias.

_________________________________________________________________
----- Original Message -----
From: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
To: "Omar Zeballos" <ozeballos(at)kantutani(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Tuesday, March 11, 2008 11:45 AM
Subject: Re: [pgsql-es-ayuda] Funcion SQL mas lenta que un SQL

> 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
> --
> TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo
> agradecerán
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Silvio Quadri 2008-03-11 17:30:35 Re: Funcion SQL mas lenta que un SQL
Previous Message Silvio Quadri 2008-03-11 16:05:35 Fwd: Funcion SQL mas lenta que un SQL