Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   AYUDA Busquedas lentas (https://www.clubdelphi.com/foros/showthread.php?t=380)

st7 13-05-2003 17:40:51

AYUDA Busquedas lentas
 
estoy utilizando una base de datos bastante grande, y estoy utilizando la propiedadad datamodule1.Table1.Locate("edit1.text", TRUE); para buscar algo en especial pero es una busqueda supremamente lenta que puedo hacer para mejorar el tiempo de busqueda? que metodo debo utilizar si lo hago con consultas SQL sera igual de lento? QUE DEBO HACER HELP!!

Gracias :confused:

delphicano 13-05-2003 19:31:18

Hola amigo, no sé en qué base de datos estarás trabajando, pero para las búsquedas en cualquier base de datos que tenga un tamaño considerable, la definición de índices es primodial para lograr un buen rendimiento en la consulta. Asegúrate que los índices se encuentren definidos para las columnas involucradas en tu consulta.

Pueden afectar otros aspectos de conección, red, procesador, etc. que no mencionas.

Espero haber dado una pequeña ayudita.

Suerte.

__hector 14-05-2003 02:25:51

Con consultas SQL no es ni remotamente lento.

Aclararte que el metodo locate si mal no recuerdo, invoca una busqueda secuencial en la tabla, por lo que los indices no te seran de mucha ayuda en este caso.

por cierto, que base de datos utilizas?

jceluce 14-05-2003 04:30:01

La respuesta depende del tipo de base de datos que estás usando:

Si usas C/S (Interbase, SQL Server, etc.): NO SE DEBE USAR LOCATE. hay que usar sentencias SQL ej.:

select * from Articulos where ArtiCod = 'M15200'

El locate busca sobre el resultado de la consulta, es decir si haces un select * from Tabla, que te devuelve 100000 registros, tu aplicacion se lee los 100000 registros, los almacena en un buffer (dentro del objeto TQuery, TIBQuery, TIBDataset, etc.) y luego busca dentro de ese buffer. Por eso es lento.

Si usas tablas Paradox la cosa cambia, ya que Locate puede hacer uso de los indices, si están definidos, y realizar la consulta en forma más eficaz. En mi experiencia personal he obtenidos mejores resultados usando FindKey en vez de Locate.


La franja horaria es GMT +2. Ahora son las 23:54:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi