Mysql
 sql >> Database >  >> RDS >> Mysql

popolare rapidamente un MySQL con un'ampia serie di righe

In generale, puoi utilizzare uno o più dei seguenti:

  • Avvia una transazione, esegui inserimenti, esegui il commit
  • Comprimi più valori in un unico inserto nella query
  • Rilascia qualsiasi vincolo prima di inserire e ripristina i vincoli dopo l'inserimento di massa (tranne possibilmente la chiave primaria, tuttavia non ne sono molto sicuro)
  • Usa insert into ... select se adatto

È molto probabile che il primo (usare le transazioni) aiuti, ma non sono sicuro che funzioni sui tavoli myisam, con innodb fa un ottimo lavoro - li uso solo quando sono costretto a usare mysql, preferisco postgresql .

Nel tuo caso specifico, inserendo 100000 righe di dati, potresti fare quanto segue:

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;

Testato sulla mia macchina, ho ottenuto:

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

Sono abbastanza sicuro che non puoi andare molto più veloce di così per 100000 righe.