我有两个表,一个是具有数据的主表,我想从另一个具有大约1300万条记录的现有表中插入数据。我正在使用查询从另一个表插入,即
insert into table1 ( column1, col2 ...) select col1, col2... from table2;
但是,遗憾的是,由于锁定等待超时错误1205,查询失败。
在没有超时的情况下,最短的时间内最好的方法是什么。
答案 0 :(得分:0)
如果你在table2上有一个主键,那么你可以使用它来批量订购和插入:
insert into table1 ( column1, col2 ...)
select col1, col2...
from table2
order by <primary key>
limit 0, 100000
然后重复此操作以获取其他值。 (当然,100,000是任意的。更大的值可能有效。可能需要更小的值。)
另一种可能性是删除所有索引并从table1
插入触发器,尝试不带它们的插入,然后在新数据出现在表格后再添加它们。