Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mysql może szybciej wstawiać miliony rekordów?

Najprawdopodobniej dlatego, że wstawiasz takie rekordy:

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

Wysyłanie nowego zapytania za każdym razem, gdy trzeba INSERT coś źle wpływa na wydajność. Zamiast tego połącz te zapytania w jedno zapytanie, tak jak to.

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

Możesz również przeczytać więcej o szybkości wstawiania w dokumentacji MySQL . Wyraźnie opisuje to, co następuje.

Oczywiście nie łącz WSZYSTKICH, jeśli ilość jest OGROMNA. Załóżmy, że masz 1000 wierszy, które musisz wstawić, a następnie nie rób tego pojedynczo. Ale prawdopodobnie nie powinieneś jednakowo próbować mieć wszystkich 1000 wierszy w jednym zapytaniu. Zamiast tego podziel go na mniejsze rozmiary.

Jeśli nadal działa bardzo wolno, może to oznaczać, że Twój serwer jest wolny.

Pamiętaj, że oczywiście nie potrzebujesz tych wszystkich spacji w zapytaniu złożonym, to po prostu po to, aby uzyskać lepszy przegląd odpowiedzi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uniknąć dzielenia przez zero w MySQL

  2. Jak zmienić typ danych kolumny tabeli w więcej niż 1 kolumnie?

  3. Nie można przekonwertować wartości daty/godziny MySQL na System.DateTime

  4. Mysql usuwa określone słowo w ciągu oddzielonym przecinkami

  5. ORDER_BY data LIMIT 1