sql >> Databáze >  >> RDS >> Mysql

rychle naplnit MySQL velkou sérií řádků

Obecně řečeno, můžete použít jednu nebo více z následujících možností:

  • Zahájit transakci, vložit, potvrdit
  • Sbalit více hodnot do jediné vložky do dotazu
  • Před vložením zrušte všechna omezení a po hromadném vložení je obnovte (možná s výjimkou primárního klíče, tím si však nejsem příliš jistý)
  • Použijte insert into ... select pokud je to vhodné

První (pomocí transakcí) s největší pravděpodobností pomůže, ale nejsem si jistý, zda to funguje na tabulkách myisam, s innodb to dělá velmi dobrou práci - používám je pouze, když jsem nucen používat mysql, preferuji postgresql .

Ve vašem konkrétním případě můžete vložením 100 000 řádků dat provést následující:

INSERT INTO status(id, responseCode, lastUpdate) SELECT @row := @row + 1 as row, 503, NOW() FROM 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t,
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t2, 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t3, 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t4, 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t5, 
(SELECT @row:=0) t6;

Vyzkoušeno na mém počítači, mám:

Query OK, 100000 rows affected (0.70 sec)
Records: 100000  Duplicates: 0  Warnings: 0

Jsem si docela jistý, že na 100 000 řádků nemůžete být o moc rychlejší.



  1. Jaký je nejrychlejší způsob hromadného vkládání velkého množství dat na SQL Server (klient C#)

  2. Jaký je účel tohoto druhu injekce SQL?

  3. PHP funkce SUM

  4. chyba 3706 poskytovatele nelze nalézt. nemusí být správně nainstalován