Esistono diversi modi per ottimizzare gli inserti sfusi. Alcuni sono:
-
LOAD DATA INFILE
. Esiste una API wrapper per . RETE . Questo è il modo più veloce, ma presenta alcune limitazioni e differenze semantiche rispetto ai semplici inserti. -
INSERT
a più righe dichiarazioni:INSERT INTO temperature (temperature) VALUES (1.0), (2.0), (3.0), ...
Non dovresti inserire 20.000.000 di righe contemporaneamente, ma potresti voler provare 1.000-10.000 per un aumento di velocità molto elevato. Questo è un modo semplice e molto non problematico per aumentare la velocità. Spesso è possibile un fattore 10 e talvolta molto di più.
-
Blocco della tabella (
LOCK TABLES
). -
Disabilitazione temporanea degli indici.
-
Ottimizzazione delle opzioni MySQL.
-
INSERT DELAYED
(molto probabilmente non così utile qui).
La documentazione fornisce dettagli più elaborati sulle opzioni. Alcune opzioni dipendono dal tipo di tabella (InnoDB rispetto a MyISAM ).
Un suggerimento generale:specifica sempre le colonne che inserisci davanti a VALUES
. Questo rende il codice più gestibile.