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.
__________________
Saludos
Javier
|