PDA

Ver la Versión Completa : Traer Registros de SQL en lotes


sanfer1ec
11-04-2007, 18:09:27
Amigos

Tengo un problema con una base de datos en SQL 2000 y una tabla que tiene mas de 100000000 de registros, se ha hecho muy pesada inclusive el log es mas grande que la base de datos.

Estoy tratando de retraer ciertos registros de esta tabla en una consulta SQL, pero se me demora mucho tiempo , inclusive hay veces ques e cuelga el programa y no trae ninguna información.

como puedo hacer para darle tiempo a al programa o al sql para que traiga lso registros en lotes y asi irlos procesando, se me ocurrio esta idea, no se si otros tengan una mejor idea.

Gracias y Saludos.

Neftali [Germán.Estévez]
11-04-2007, 18:18:07
¿Cómo estás accediendo a los datos? ¿ADO?
ADO tiene la posibilidad de aumentar el TimeOut de las consultas.

sanfer1ec
11-04-2007, 18:58:58
tengo a traves de un componente llamado Tquery a la BD. en este envio la consulta, pero quisiera la manera que me vaya mostrando los resultados mientras vaya adquiriendo, porque el problema es que no muestra ningun resultado hasta que termina la consulta.

Por eso pensaba en lotes, lo que no quiero es aumentar el tiempo y esperar el resultado de la consulta, porque por x razon me equivoque en enviar la consulta y ahi me toca esperar hasta que termine de realizar.

Neftali [Germán.Estévez]
11-04-2007, 19:22:39
Deberías mirar la posibilidad de acceder vía ADO que es más eficiente que TQuery para acceder a SQL Server.
Prueba con un ADOConnection y un ADOQuery.
Además el ADOQuery/ADOConnection tienen la posibilidad de configurar el cursor que usan para acceder a la Base de Datos en modo "Server" (CursorType) con lo que al ejecutar la consulta no se traen todos los registros de golpe, sino que se van trayendo por lotes....

También deberías tener en cuenta el uso de Filtros, de la sentencia TOP, índices por los campos de búsqueda,...