sql >> Base de Datos >  >> RDS >> Mysql

llene un MySQL con una gran serie de filas rápidamente

En términos generales, puede usar uno o más de los siguientes:

  • Iniciar una transacción, hacer inserciones, confirmar
  • Empaque varios valores en una sola inserción en la consulta
  • Elimine cualquier restricción antes de insertar y restablezca las restricciones después de la inserción masiva (excepto posiblemente la clave principal, aunque no estoy muy seguro de ello)
  • Usar insert into ... select si es adecuado

Lo primero (usar transacciones) es más probable que ayude, pero no estoy seguro de si funciona en las tablas de myisam, con innodb hace un muy buen trabajo. Solo las uso cuando me veo obligado a usar mysql, prefiero postgresql. .

En su caso específico, al insertar 100000 filas de datos, podría hacer lo siguiente:

INSERT INTO status(id, responseCode, lastUpdate) SELECT @row := @row + 1 as row, 503, NOW() FROM 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t,
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t2, 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t3, 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t4, 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t5, 
(SELECT @row:=0) t6;

Probé esto en mi máquina, obtuve:

Query OK, 100000 rows affected (0.70 sec)
Records: 100000  Duplicates: 0  Warnings: 0

Estoy bastante seguro de que no puedes ir mucho más rápido que eso para 100000 filas.