Re: Orden SQL pasada a ps_query demasiado larga

From: Juanky Moral <juanky(dot)moral(at)gmail(dot)com>
To: Adrian Ferreres Esteller <raro82(at)hotmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Orden SQL pasada a ps_query demasiado larga
Date: 2005-05-08 10:20:48
Message-ID: 463a53a40505080320773b5b90@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

¿se utilizan todos los atributos siempre? Te lo digo porque
probablemente el usuario escoja sólo un subconjunto en los criterios
de selección. Si es así, lo más eficaz es que construyas dinámicamente
la query (la condición WHERE).
Si crees que te puede ayudar esta idea, házmelo saber y te paso un ejemplo.
Un saludo.

El 7/05/05, Adrian Ferreres Esteller<raro82(at)hotmail(dot)com> escribió:
> Hola lista:
>
> Estoy desarrollando mi proyecto final de carrera que es un intranet en
> php para un inmobiliaria. El programa almacena y lee los datos en una base
> de datos postgreSQL y tengo un serio problema. Resulta que, a la hora de
> hacer una busqueda avanzada sobre una vivienda, la cantidad de datos que me
> pide el usuario que tenga en consideracion es tan grande que da como
> resultado una orden select de mas de 500 caracteres. La funcion pg_query,
> que es la funcion encargada de pasar ordenes SQL a postgreSQL, tiene la
> limitacion de que dichas ordenes no deben superar la longitud de 500
> caracteres.
>
> Las medidas que he tomado hasta ahora son las de reducir el numero de
> caracteres utilizados en los atributos de la base de datos. Si por ejemplo,
> antes utilizaba nombres de atributos como inmueble_codigo o
> fecha_construccion, ahora utilizo nombres como ic o fc. Y luego he abreviado
> al la orden select quitando los espacios en blanco prescindibles y cambiando
> la enumeracion de atributos a mostrar por el signo '*'. El resultado es el
> mismo, una cadena de caracteres de una longitud de mas de 500.
>
> La solucion que voy a probar ahora es la de partir la consulta en dos
> consultas, es decir, primero hago la consulta con la mitad de atributos y
> obtengo unos resultados y luego hago otra consulta con el resto de
> atributos. Luego creo un bucle for o while que recorra ambas tablas y
> aquellas lineas de tablas cuyas claves primarias coincidan son las que
> mostramos y las demas las ignoramos. El problema de esta solucion es que
> puede elevar demasiado el conste temporal de ejecución del programa.
>
> Mi pregunta es:
>
> ¿A alguien se le ocurre alguna estrategia mejor?
>
> Muchas gracias
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 7: no olvides aumentar la configuración del "free space map"
>

--
Juanky Moral
"Tendré que moverme más rápido: el horizonte brilla eléctrico."
(Horizonte Eléctrico - www.losdeltonos.com )

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mauricio Zea (Gmail) 2005-05-08 14:14:26 Re: Rendimiento del delete
Previous Message Alvaro Herrera 2005-05-08 04:45:49 Re: cnx.commit() problemas