优化insert into xx select from

题目描述

有一些复杂查询sql(1W),这些sql有同一张表B1,现在要根据sql的结果插入各自的表中,一条sql一张表。sql里的关联表没有更新操作。
每条sql查出的数据在1~10W

相关代码 粘贴代码文本(请勿用截图)

insert into sql1Table ( select from )
insert into sql2Table ( select from )

你期待的结果是什么?实际看到的错误信息又是什么?

由于目前的单线程插入速度较慢,多线程后会不会有“锁”竞争;如果改造先搜出来再插入,会有数据传输占用带宽。

有没有比较好的方案

阅读 4.3k
4 个回答

感觉你说的慢,是慢在后面的 select 上,而不是 insert 上, 优化下后面的 select 语句吧.

可以试试mysql存储过程,将查询和插入逻辑写到mysql的server端执行

普通的select是快照读,基于mvcc实现,是不需要加锁的,除非你用的是select for update,否则就不会对B1加锁

首先看sql1Table ,sql2Table,是不是同一张表,如果不同,不存在锁冲突;
如果两者有相同的表,看select出来的数据是否冲突,冲突具体在主键,索引键上。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题