sql >> Databasteknik >  >> RDS >> Mysql

Hur man infogar ett mycket stort antal poster i en MySql-databas så snabbt som möjligt

Det finns ett antal sätt att optimera bulkskär. Vissa är:

  • LOAD DATA INFILE . Det finns ett wrapper API för . NET . Detta är det snabbaste sättet, men har vissa begränsningar och semantiska skillnader från enkla inlägg.

  • Flerrads INSERT uttalanden:

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

    Du bör inte infoga 20 000 000 rader på en gång, men kanske vill prova 1 000-10 000 för en mycket stor hastighet. Detta är ett enkelt och mycket oproblematiskt sätt att öka hastigheten. En faktor på 10 och ibland mycket mer är ofta möjligt.

  • Låsa tabellen (LOCK TABLES ).

  • Inaktiverar index tillfälligt.

  • MySQL-alternativinställning.

  • INSERT DELAYED (förmodligen inte så användbart här).

Dokumentationen ger dig mer utförliga detaljer på alternativen. Vissa alternativ beror på tabelltypen (InnoDB kontra MyISAM ).

Ett allmänt förslag:Ange alltid kolumnerna som du infogar framför VALUES . Detta gör koden mer underhållbar.



  1. Hur ekar man slumpmässiga rader från databasen?

  2. Vad är den korrekta syntaxen för en Regex hitta-och-ersätt med REGEXP_REPLACE i MariaDB?

  3. Kör Vitess och MySQL med ClusterControl

  4. Hur man formaterar siffror som valuta i SQL Server (T-SQL)