Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将数据从一个表插入到另一个表_Mysql - Fatal编程技术网

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
。此查询没有可能的改进。前面的技巧只是一个不会影响执行时间的语法糖