sql >> Databasteknik >  >> RDS >> Mysql

Hur kan mysql infoga miljoner poster snabbare?

Det är mest troligt för att du infogar poster så här:

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

Skickar en ny fråga varje gång du behöver INSERT något är dåligt för prestandan. Kombinera istället dessa frågor till en enda fråga, så här.

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

Du kan också läsa mer om infogningshastighet i MySQL Docs . Den beskriver tydligt följande.

Naturligtvis kombinera inte ALLA, om mängden är ENORM. Säg att du har 1000 rader du behöver infoga, gör sedan inte det en i taget. Men du bör förmodligen inte lika försöka ha alla 1000 rader i en enda fråga. Dela upp den i mindre storlekar istället.

Om det fortfarande är väldigt långsamt kan det bero på att din server är långsam.

Observera att du naturligtvis inte behöver alla dessa utrymmen i den kombinerade frågan, det är helt enkelt för att få en bättre överblick över svaret.




  1. Är det nödvändigt att använda mysql_real_escape_string(), när magic_quotes_gpc är på?

  2. Hur man skriver oracle insert script med ett fält som CLOB?

  3. Det går inte att installera mysqlclient på centos

  4. Hur man genererar infogningssatser från textfiler för SQL Server-tabell i SQL Server - SQL Server / TSQL självstudie del 106