sql >> Database >  >> RDS >> Mysql

Hoe een zeer groot aantal records zo snel mogelijk in een MySql-database in te voegen?

Er zijn een aantal manieren om bulkinserts te optimaliseren. Sommige zijn:

  • LOAD DATA INFILE . Er is een wrapper-API voor . NET . Dit is de snelste manier, maar heeft enkele beperkingen en semantische verschillen met eenvoudige invoegingen.

  • Meerdere rijen INSERT uitspraken:

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

    U moet geen 20.000.000 rijen tegelijk invoegen, maar misschien wilt u 1.000-10.000 proberen voor een zeer grote versnelling. Dit is een eenvoudige en zeer probleemloze manier om de snelheid te verhogen. Een factor 10 en soms veel meer is vaak mogelijk.

  • De tafel vergrendelen (LOCK TABLES ).

  • Indexen tijdelijk uitschakelen.

  • MySQL-opties afstemmen.

  • INSERT DELAYED (waarschijnlijk niet zo handig hier).

De documentatie geeft je wel meer uitgebreide details op de opties. Sommige opties zijn afhankelijk van het tabeltype (InnoDB vs. MijnISAM ).

Een algemene suggestie:geef altijd de kolommen op die u invoegt vóór VALUES . Dit zorgt voor beter onderhoudbare code.



  1. SQL ORDER OP meerdere kolommen

  2. Wat is de tekenreeksaaneenschakelingsoperator in Oracle?

  3. Installatie van RODBC/ROracle-pakketten op OS X Mavericks

  4. MySQL UDF sys_exec() werkt niet