Hay varias formas de optimizar las inserciones masivas. Algunos son:
-
LOAD DATA INFILE
. Hay una API contenedora para . NETO . Esta es la forma más rápida, pero tiene algunas limitaciones y diferencias semánticas con respecto a las inserciones simples. -
INSERT
de varias filas declaraciones:INSERT INTO temperature (temperature) VALUES (1.0), (2.0), (3.0), ...
No debe insertar 20.000.000 filas a la vez, pero puede intentar 1.000-10.000 para una gran aceleración. Esta es una forma simple y sin problemas de aumentar la velocidad. A menudo es posible un factor de 10 y, a veces, mucho más.
-
Bloqueando la tabla (
LOCK TABLES
). -
Inhabilitando índices temporalmente.
-
Ajuste de opciones de MySQL.
-
INSERT DELAYED
(lo más probable es que no sea tan útil aquí).
La documentación le brinda detalles más elaborados sobre las opciones. Algunas opciones dependen del tipo de tabla (InnoDB frente a MyISAM ).
Una sugerencia general:especifica siempre las columnas que insertas delante de VALUES
. Esto hace que el código sea más fácil de mantener.