Mysql 将数据从一个表插入到另一个表
我的数据库中有两个表Mysql 将数据从一个表插入到另一个表,mysql,Mysql,我的数据库中有两个表 create table A1 (username varchar(50), Sn int); create table A2 (username varchar(50), Sn int); 我正在将数据插入表A2中 insert into A2 values("abhi",1); insert into A2 values("abhi",2); insert into A2 values("abhi",3); insert into A2 values("abhi",4
create table A1 (username varchar(50), Sn int);
create table A2 (username varchar(50), Sn int);
我正在将数据插入表A2中
insert into A2 values("abhi",1);
insert into A2 values("abhi",2);
insert into A2 values("abhi",3);
insert into A2 values("abhi",4);
insert into A2 values("abhi",5);
insert into A2 values("abhi",,6);
为此,我使用这个查询
insert into A1 select * from A2 where Sn >=
(select (case when max(Sn) is null then 0 else max(Sn) end) +1 from A1)
Limit 3;
如果表中有100000条记录,那么这个查询是否有效。我认为在检查max时,它会降低性能。我正在为此使用事件计划程序,它将在每5分钟后自动运行此查询
如何改进此查询?如果正确索引了
A1.Sn
,则子查询实际上是即时的。您可以轻松地为其执行时间(仅子查询)计时,或者运行EXPLAIN[子查询]
检查执行计划
同样地,A2.Sn
显然应该为建立索引,其中A2.Sn>=x
条件才能快速运行
注意:您的子查询可以简化为:从A1中选择COALESCE(MAX(Sn),0)+1
。此查询没有可能的改进。前面的技巧只是一个不会影响执行时间的语法糖