PDA

Ver la Versión Completa : AYUDA Busquedas lentas


st7
13-05-2003, 17:40:51
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.