sql >> Databasteknik >  >> RDS >> Mysql

mysql tar för lång tid att infoga rader

Anta inte automatiskt att dina serverinställningar är felaktiga. Standardinställningarna är förmodligen bra. Att infoga 10 000 rader borde vara en pjäs, även på en gammal maskin, men det beror på hur du gör dina skär.

Här kommer jag att beskriva tre metoder för att infoga data, allt från långsamt till snabbt:

Följande är extremt långsamt om du har många rader att infoga:

INSERT INTO mytable (id,name) VALUES (1,'Wouter');
INSERT INTO mytable (id,name) VALUES (2,'Wouter');
INSERT INTO mytable (id,name) VALUES (3,'Wouter');

Det här är redan mycket snabbare:

INSERT INTO mytable (id, name) VALUES
  (1, 'Wouter'),
  (2, 'Wouter'),
  (3, 'Wouter');

(Redigerade fel syntax)

Och det här är vanligtvis det snabbaste:

Har en CSV-fil som ser ut så här:

1,Wouter
2,Wouter
3,Wouter

Och kör sedan något som

LOAD DATA FROM INFILE 'c:/temp.csv' INTO TABLE mytable

Vilken av ovanstående metoder använder du?



  1. PHP MySQL Ordna efter flera kolumner

  2. MySQL-indexnamn och främmande nyckelnamn måste vara olika för olika tabeller?

  3. Välj de senaste 5 raderna baserat på datum

  4. Vad är motsvarigheten till 'beskriv tabell' i SQL Server?