小编典典

MySQL更快的INSERT

sql

好的,我有大约175k INSERT语句,相当大的INSERT语句,例如:

INSERT INTO `gast` (`ID`,`Identiteitskaartnummer`,`Naam`,`Voornaam`,`Adres`,`Postcode`,`Stad`,`Land`,`Tel`,`Gsm`,`Fax`,`Email`,`Creditcardnummer`) VALUES ('100001','5121-1131-6328-9416','Cameron','Rhoda','Ap #192-1541 Velit Rd.','54398','Catskill','Bermuda','1-321-643-8255','(120) 502-0360','1 48 428 3971-3704','tempor@justo.org','8378-3645-3748-8446');

(无视这是荷兰语的事实)。所有数据都是完全随机的。

我必须做大约3到4次。在我的PC上查询10万条INSERT语句大约需要一个小时。有什么办法可以在不更改INSERT语句的情况下更快地做到这一点?我正在使用MySQL
Workbench。谢谢。

编辑

到目前为止,我已经尝试了所有建议的方法。仅使用一个INSERT但使用多个VALUES会给我一个错误,即INSERT语句太大。在插入之前禁用索引也不会提高性能。

我也尝试过通过命令行加载sql文件,但这也不起作用。

每个INSERT的插入性能从0.015s到0.032s不等。


阅读 157

收藏
2021-05-23

共1个答案

小编典典

将所有数据插入一个表(您将使用该表重新设置数据库的表)中,然后发出INSERT SELECT语句,因为它随后将作为批处理而不是175K个不同的语句执行。

同样,当您使用INSERT SELECT语句重新设置数据库的种子时,请关闭目标表上的约束ALTER TABLE yourtablename DISABLE KEYS,然后再将其重新打开ALTER TABLE yourtablename ENABLE KEYS

我还将亲自在种子数据表上建立覆盖索引,因为这样就不必读取数据页。

2021-05-23