Ver Mensaje Individual
  #11  
Antiguo 31-05-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Reputación: 19
Chris Va por buen camino
Hola Jafera y todos los compañero del Club!

Te recomiendo que desactives/quites (comentes) la línea que utiliza Locate. Luego has nuevamente las pruebas.

Realmente, Locate es una función muy lenta y consume y desperdicia demasiados recursos si utilizas un DB en red tipo Firebird. Locate solo debería de utilizarse para grupos de datos muy pequeños. Un grupo de 1,500 registros no es precisamente pequeño, más si éstos deben ser transportados por la red.

Otro problema que podría estar empeorando el uso de Locate, es que estás utilizando objetos para los campos. Por ejemplo: "Buscar_CamioID", "Camions_ParcID". Estos objetos deben ser actualizados cada vez que se cambia el cursor, lo que origina un gran consumo de recurso. Además, no sabemos si su implementación interna tenga problemas, cómo una fuga de memoria por ejemplo. Mejor utiliza algo más eficiente cómo por ejemplo: "MiTabla.FieldByName('id')".

Me gustaría saber que base de datos utilizas.

Si encuentras que Locate es el problema, entonces sería oportuno que empieces a pensar en otra arquitectura para conseguir lo que quieres. No esperes una respuesta a: "Cómo hacer más rápido a Locate" porque realmente, Locate no puede ser más rápido. Algo más rápido que Locate, es algo que no sea Locate.

Saludos!
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita