Necesito mejorar el rendimiento de la carga de datos. El algoritmo actual hace una selección completa de una tabla:¿Cómo mejorar el rendimiento de inserción/actualización de datos?
select Field1, Field2,...,FieldN from Table1 order by FieldM
Los nuevos datos se leen desde un archivo de texto (por ejemplo, archivo de texto línea por línea tabla de datos). La tabla tiene una clave principal, que contiene dos campos. Para cada línea de un archivo de texto, localiza la fila necesaria en estos dos campos (es decir, la clave principal).
query.Locate('Field1;Field2',VarArrayOf([Value1,Value2]),[]);
If Locate
vuelve True
, que edita la fila, de lo contrario, añade una nueva.
Por lo tanto, en la medida en que la tabla consta de aproximadamente 200000 filas, cada operación Locate
lleva cierto tiempo ... por lo que se las arregla para actualizar alrededor de 5-6 filas por segundo.
¿Qué cosas debo considerar para mejorarlo?
¿Probablemente cambie la localización a través de esta gran selección con consultas separadas?
Esta solución redujo el tiempo de carga de 4 horas a menos de 4 minutos. ¡Realmente aprecio tu ayuda! ¡Gracias! – horgh