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

Jak wstawić bardzo dużą liczbę rekordów do bazy danych MySql tak szybko, jak to możliwe?

Istnieje wiele sposobów optymalizacji wstawek zbiorczych. Niektóre z nich to:

  • LOAD DATA INFILE . Istnieje interfejs API dla . NET . Jest to najszybszy sposób, ale ma pewne ograniczenia i różnice semantyczne w porównaniu z prostymi wstawkami.

  • Wielowierszowy INSERT oświadczenia:

    INSERT INTO temperature (temperature) VALUES (1.0), (2.0), (3.0), ...

    Nie powinieneś wstawiać 20.000.000 wierszy na raz, ale możesz spróbować 1.000-10.000, aby uzyskać bardzo duże przyspieszenie. To prosty i bardzo bezproblemowy sposób na zwiększenie prędkości. Często możliwy jest współczynnik 10, a czasem znacznie więcej.

  • Blokowanie tabeli (LOCK TABLES ).

  • Tymczasowe wyłączenie indeksów.

  • Strojenie opcji MySQL.

  • INSERT DELAYED (najprawdopodobniej nie jest to tutaj przydatne).

Dokumentacja zawiera bardziej szczegółowe informacje na opcjach. Niektóre opcje zależą od typu tabeli (InnoDB w porównaniu z MyISAM ).

Ogólna sugestia:zawsze określaj kolumny, które wstawiasz przed VALUES . Dzięki temu kod jest łatwiejszy w utrzymaniu.



  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 podzielić ciąg rekordów oddzielony przecinkami i uporządkować je sekwencyjnie w MySQL?

  2. Jak zduplikować tabelę w MySQL

  3. Jak dodać kolumnę automatycznego przyrostu w istniejącej tabeli w MySQL?

  4. SQLSTATE[23000]:Naruszenie ograniczenia integralności z prawidłowym ograniczeniem

  5. Jak $_POST dynamicznie przypisaną wartość w PHP?