sql >> Database >  >> RDS >> Mysql

Hoe kan mysql sneller miljoenen records invoegen?

Dit komt waarschijnlijk doordat u records als volgt invoegt:

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");

Elke keer dat u moet INSERT een nieuwe zoekopdracht verzenden iets is slecht voor de prestaties. Combineer die zoekopdrachten in plaats daarvan tot één enkele zoekopdracht, zoals deze.

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

U kunt ook meer lezen over invoegsnelheid in de MySQL Docs . Het beschrijft duidelijk het volgende.

Combineer ze natuurlijk niet ALLEMAAL, als het bedrag ENORM is. Stel dat je 1000 rijen hebt die je moet invoegen, doe het dan niet één voor één. Maar u moet waarschijnlijk niet even proberen om alle 1000 rijen in één enkele query te hebben. Verdeel het in plaats daarvan in kleinere formaten.

Als het nog steeds erg traag is, kan het zijn dat je server traag is.

Houd er rekening mee dat je natuurlijk niet al die spaties in de gecombineerde zoekopdracht nodig hebt, dat is gewoon om een ​​beter overzicht van het antwoord te krijgen.




  1. Zoek ouder recursief met behulp van Query

  2. MySQL - Hoe in te voegen in meerdere tabellen met externe sleutels

  3. Indexeert MySQL automatisch kolommen met externe sleutels?

  4. Probleem met Java-programma en mySQL-verbinding:geen geschikt stuurprogramma gevonden