Re: Dudas en un query con funcion y con el where.

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Nicola Strappazzon <nicola51980(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Dudas en un query con funcion y con el where.
Date: 2006-10-18 14:53:04
Message-ID: 20061018145304.GY31297@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Nicola Strappazzon escribió:
> Hola lista, se me presento un problema con el tiempo que se tarda para
> retornas datos de una consulta, dicha consulta llama a una función para
> calcular el indice academico de un estudiante, y luego llamo nuevamente ha
> esta funcion para filtrar los datos que sean mayor o igual a 16.
>
> SELECT DISTINCT u."pk_usuario", u."nombre", u."apellido",
> fn_xrxx_estudiante_iap(u."pk_usuario", 109)
> FROM tbl_recordsacademicos ra
> INNER JOIN tbl_inscripciones i ON i.pk_inscripcion = ra.fk_inscripcion
> INNER JOIN tbl_asignaturas ag ON ag.pk_asignatura = ra.fk_asignatura
> INNER JOIN tbl_usuariosgrupos ug ON ug.pk_usuariogrupo = i."fk_usuariogrupo"
> INNER JOIN tbl_usuarios u ON u.pk_usuario = ug.fk_usuario
> WHERE i.fk_periodo = 109
> AND i.fk_atributo = 11
> AND fn_xrxx_estudiante_iap(u."pk_usuario", 109) >= 16;
>
> Mi pregunta es la siguiente, como hago para no llamar dos veces a la función
> y me filte los datos, existe esa posibilidad? hay otra forma?

Puedes meter la funcion en un subselect en el FROM. No tengo tiempo en
este momento de mostrarte como se hace, algun otro listero te puede
ayudar (si es que no puedes hacerlo tu mismo -- en realidad no es tan
dificil)

Una vez que lo hayas hecho, examina el plan de ejecucion con EXPLAIN,
porque puede que el optimizer reduzca esa consulta a esta misma forma.
En ese caso deberas poner un OFFSET 0 a la consulta del subselect, lo
cual actua como una barrera de optimizacion ("optimization barrier";
puedes mirar los archivos de pgsql-hackers para leer mas sobre ese
truco).

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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2006-10-18 14:53:24 Re: Error de Instalacion
Previous Message Jorge A. Barzola Rosadio 2006-10-18 14:48:16 Re: Error de Instalacion