将长INSERT ... SELECT拆分为循环

时间:2014-10-30 22:57:39

标签: mysql loops bulkinsert

在MySQL中,我需要执行一个很长的INSERT INTO t1 SELECT FROM t2,并且我不希望t2保持写锁定时间过长。

我的想法是通过重复发出如下问题来遍历t2.id

INSERT INTO t1 SELECT FROM t2 WHERE t2.id BETWEEN n0 AND n1
INSERT INTO t1 SELECT FROM t2 WHERE t2.id BETWEEN n1 AND n2
...

两个问题:

  1. 这是一个好主意,还是有更好的解决方案?
  2. 您是否建议在MySQL中使用LOOP创建存储过程,或通过脚本(例如bash)管理循环?
  3. 编辑:如评论中所建议的,如果脏读取是可接受的(如我的情况),SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED允许运行初始查询而没有锁定。

0 个答案:

没有答案