From: | Calabaza <calalinux(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: preevaluar consulta |
Date: | 2008-06-19 12:02:49 |
Message-ID: | 958993320806190502vf929f9ck84d3d0d1052e9ed6@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El día 19 de junio de 2008 7:02, Gabriel Ferro
<gabrielrferro(at)yahoo(dot)com(dot)ar> escribió:
>
> Mestros, tengo que enviar una consulta a una base que puede por un lado
> demorar bastante tiempo en ser procesada y por otro lado puede llegar a
> responder con muchos registros.
> Suponiendo una base con personas, si quiero buscar las personas por su
> nombre(nombre y apellido), lo que hago desde la apliacacion VB6, es
>
> cadaux = "SELECT analisis.personas.documento, analisis.personas.nombre,
> analisis.personas.datos," _
> & " analisis.personas.sexo, analisis.personas.fechanac,
> analisis.docu.tipo AS TDOC," _
> & " analisis.localidades.localidad, analisis.departamentos.departamento,
> analisis.provincias.provincia" _
> & " From analisis.personas INNER JOIN analisis.docu ON
> (analisis.personas.tipodoc=analisis.docu.clave)" _
> & " INNER JOIN analisis.personaloc ON
> (analisis.personas.documento=analisis.personaloc.documento)" _
> & " AND (analisis.personas.tipodoc=analisis.personaloc.tipodoc)" _
> & " INNER JOIN analisis.localidades ON
> (analisis.personaloc.claveloc=analisis.localidades.claveloc)" _
> & " INNER JOIN analisis.departamentos ON
> (analisis.localidades.codprov=analisis.departamentos.codprov)" _
> & " AND (analisis.localidades.coddpto=analisis.departamentos.coddpto)" _
> & " INNER JOIN analisis.provincias ON
> (analisis.departamentos.codprov=analisis.provincias.codprov)" _
> & " WHERE (analisis.personas.nombre LIKE '%" & nomper & "%');"
>
> Set tuplasP = cnn.Execute(cadaux)
> como veran es simple pero si por ejemplo pongo buscar los "MARTINEZ", me
> pueden llegar a demorar bastante desde que la ejecuto hasta que el primer
> registro esta disponible y su vez entregar una gran cantidad de registros.
> creo que si antes un select similar pero solo con un rowcount, eliminaria
> los tiempos de armado de la tabla resultado, pero creo que no ganaria
> demasiado en tiempos de respuestas y recursos.
> Lo que quisiera saber es si existe la forma de preevaluar la cantidad de
> registros
Con explain analyze puedes analizar tu sql a ver que tan efectivo es...
http://www.postgresql.org/docs/8.3/interactive/sql-explain.html
> o mejor aun hacer que el servidor me vaya entregando de a un
> registro
Date una vuelta por:
http://www.postgresql.org/docs/8.3/interactive/sql-select.html#SQL-LIMIT
Puedes hacer selects con offset y le devuelves alguna cierta cantidad,
una suerte de paginacion,
quizas te sirva...
> de modo que la aplicacion o el usuario pueda cortar el proceso,
> perdon por mi extrapolacion pero algo asi como el streaming
Disculpa si no soy tan preciso, pero solo con sugerencias puedo
colaborar en este caso.
Un abrazo.
--
§~^Calabaza^~§ from Villa Elisa, Paraguay
----------------
A hendu hína: DOMINE - Icarus Ascending
http://foxytunes.com/artist/domine/track/icarus+ascending
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2008-06-19 12:47:05 | Re: preevaluar consulta |
Previous Message | Juan Carlos Barranco de Paz | 2008-06-19 11:44:49 | RV: compatibiliad 8.2.4 con 8.3.1 |