Cita: También me llama la curiosidad, lo que comentas que tienes algunos que insertan 1.000 por bloque, te refieres 1.000 registros en el fichero? es perjudicial hacer 100.000 en lugar de 1.000 en 1.000? hay que dividirlos en bloques?
Es una cuestión eminentemente práctica:
100.000 registros de 300 bytes por registro, por ejemplo, requiere enviar al buffer 30 Mb de un saque... lo que te puede poner en problemas si el buffer no tiene la capaciad necesaria. Te verías obligado a reconfigurarlo, y si es un servidor tercerizado, tu mismo no puedes hacerlo.
Cita: Y cuando dices que es complejo los updates, comentarte que no cambian todos los datos, cada registro conserva sus datos a excepción de dos, que son el "precio" que es lo que puede ir cambiando en cada lectura del XML. Los updates son en campos fijos. En ese caso si que se podría usar el SP de manera sencilla?
Si sólo se desea afectar dos campos en la tabla, podría pensarse tanto en usar REPLACE masivamente como implementarlo en el LOAD DATA (LOAD DATA ... REPLACE...), pero el problema que en ambos casos reemplaza los valores completos del registro, con lo que los otros datos se perderían.
En este caso lo que yo recomendaría es usar una tabla temporal donde se carguen los datos nuevos, y luego realizar un UPDATE con JOIN donde se pueda indicar que la tabla destino se actualice en esos dos campos con la tabla temporal.
Algo como:
Código MySQL:
Ver originalSET T1.campo1
= T2.campo1
, T1.campo2
= T2.campo2
;
Podría ser más simple y rápido
Cita: Crees posible la utilización de algun tipo de caché? o la caché solo afecta a los selects no a los inserts ni updates, y al estar todo el rato insertando y updatando la tabla la caché no haría nada, correcto?
La
query cache de MySQL, según el manual, solamente opera con SELECT (
5.12. La caché de consultas de MySQL)