Re: preevaluar consulta

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

In response to

Browse pgsql-es-ayuda by date

  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