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. -
INSERTde 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.