El mié, 09-02-2011 a las 14:20 -0300, Alvaro Herrera escribió: > Excerpts from Gerardo Herzig's message of jue feb 03 15:45:38 -0300 2011: > > Hola chicos. Estoy teniendo problemas con la lentitud de una funcion. > > Estoy usando la funcion _xxfunction() dentro de un subselect, entonces > > uso su forma select (_xxfunction()).* (en lugar de select * from..., > > sino dentro del subquery me genera error sintactico), y el tema es que > > tarda mucho mas un modo que el otro: > > > > test=# SELECT (_xxfunction(123)).* ; > > (4 filas) > > Duración: 1069,465 ms > > > > > > test=# SELECT * from _xxfunction(123) ; > > (4 filas) > > Duración: 228,699 ms > > > > Alguna idea de porque de esto? Alguna alternativa? > > Gracias! > > Si mal no recuerdo, al hacer ().* se ejecuta la función tantas veces > como columnas haya en el resultado. Quizás funcione algo como > > select foo.* from (select * from _xxfunction(123) offset 0) as foo; >
Gracias Alvaro, si, tenes razon, pasa que no exprese bien mi problema, que es ligeramente distinto (creo) Yo tengo que lograr algo como select * from _xxfunction(codigo) from (select codigo from tabla) Y esto tiene un error de sintaxis. Si uso la forma select (_xxfunction(codigo)).* from (select codigo from tabla) elimino el error sintactico, pero como bien decis, llamo muchas veces a la funcion, y se torna demasiado lento. Y no logro dar con el modo correcto para evitar el uso de (f()).* Gracias! Gerardo - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda