我有一种情况,我必须在一张表中插入超过1000万条单独的记录。通常情况下,批量插入拆分成块可以为我工作。然而问题是这个超过3gig的文件包含超过1000万个单独的插入语句。由于每个查询需要0.01到0.1秒,因此插入所有内容需要2天以上。
我确信必须有一种方法可以通过大幅度降低插入时间或以某种方式以不同方式导入来优化这一点。
我现在只是使用cli
source /home/blabla/file.sql
注意:这是第三方向我提供此文件。我是
小更新 我删除了任何索引
答案 0 :(得分:2)
删除索引,然后在完成后重新编制索引!
答案 1 :(得分:0)
也许您可以解析文件数据并将几个INSERT查询组合到一个查询中,如下所示:
INSERT INTO tablename (field1, field2...) VALUES (val1, val2, ..), (val3, val4, ..), ...
答案 2 :(得分:0)
有一些方法可以提高INSERT
语句的速度:
如果这是一个选项,请尝试一次插入多行。
另一种方法是将数据插入到没有索引的所需表的副本中,在那里插入数据,然后添加索引并重命名表。
如果这是一个选项,可以使用LOAD DATA INFILE
。
MySQL手册也有something to say about that。