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

Hvordan kan mysql indsætte millioner poster hurtigere?

Det er højst sandsynligt, fordi du indsætter poster som denne:

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

Sender en ny forespørgsel hver gang du skal INSERT noget er dårligt for ydeevnen. Kombiner i stedet disse forespørgsler til en enkelt forespørgsel, som denne.

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

Du kan også læse mere om indsættelseshastighed i MySQL Docs . Den beskriver tydeligt følgende.

Man skal selvfølgelig ikke kombinere dem ALLE, hvis mængden er KÆMPE. Lad os sige, at du har 1000 rækker, du skal indsætte, så gør det ikke én ad gangen. Men du skal nok ikke lige prøve at have alle 1000 rækker i en enkelt forespørgsel. Del den i stedet op i mindre størrelser.

Hvis den stadig er rigtig langsom, så er det måske bare fordi din server er langsom.

Bemærk, at du selvfølgelig ikke har brug for alle disse mellemrum i den kombinerede forespørgsel, det er simpelthen for at få et bedre overblik over svaret.




  1. Er det muligt at oprette en kolonne i MySQL med et udtryk som standardværdi?

  2. Er en BLOB konverteret ved hjælp af det aktuelle/standardtegnsæt i MySQL?

  3. 4 PL/SQL anonyme blokeksempler

  4. Sådan opdaterer du en MySql DB ved hjælp af Flex