gpt4 book ai didi

mysql - 将一张表的数据插入另一张表

转载 作者:行者123 更新时间:2023-11-30 22:58:43 24 4
gpt4 key购买 nike

我的数据库中有两个表

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;

如果表中有 100 000 条记录,此查询是否有效?我认为在检查 max 时它会降低性能。我正在为此使用事件调度程序,它会在每 5 分钟后自动运行此查询。

如何改进这个查询?

最佳答案

如果 A1.Sn 被正确索引,那么子查询几乎是即时的。您可以轻松记录其执行时间(仅子查询),或运行 EXPLAIN [the subquery] 来检查执行计划。

同样,A2.Sn 显然应该为 WHERE A2.Sn >= x 条件建立索引以快速运行。

附言:您的子查询可以简化为:SELECT COALESCE(MAX(Sn), 0) +1 FROM A1。此查询无法改进。前面的技巧只是一个语法糖,不会影响执行时间。

关于mysql - 将一张表的数据插入另一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25020486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com