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

Come può mysql inserire milioni di record più velocemente?

È molto probabile che tu stia inserendo record come questo:

INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");

Invio di una nuova query ogni volta che è necessario INSERT qualcosa non va bene per le prestazioni. Combina invece queste query in un'unica query, come questa.

INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2"),
                                                 ("data1", "data2"),
                                                 ("data1", "data2"),
                                                 ("data1", "data2"),
                                                 ("data1", "data2");

Puoi anche leggere ulteriori informazioni sulla velocità di inserimento in MySQL Docs . Descrive chiaramente quanto segue.

Ovviamente non combinarli TUTTI, se l'importo è ENORME. Supponiamo di avere 1000 righe da inserire, quindi non farlo una alla volta. Ma probabilmente non dovresti provare ugualmente ad avere tutte le 1000 righe in una singola query. Invece, suddividilo in dimensioni più piccole.

Se è ancora molto lento, potrebbe essere solo perché il tuo server è lento.

Nota che ovviamente non hai bisogno di tutti quegli spazi nella query combinata, semplicemente per avere una migliore panoramica della risposta.