gpt4 book ai didi

mysql - 仅将非重复项插入没有键的 MySQL 表中

转载 作者:行者123 更新时间:2023-11-29 08:04:58 25 4
gpt4 key购买 nike

我在 MySQL 中有两个表,并且希望定期将新数据从一个表插入到另一个表中。举个例子:

create table src(n integer, m integer);
create table dst(n integer, m integer);

insert ignore into dst(n, m) select n, m from src;

但是,dst 上没有 key ,所以这不起作用!此外,我无法创建任何 key ,因为我们有时希望允许另一个进程创建重复项。

这就是我现在完成的方法;这似乎是一种黑客式的解决方法,我担心它的性能不高:

insert into dst(n, m)
select src.n, src.m
from src left outer join dst
on src.n = dst.n and src.m = dst.m
where dst.n is null and dst.m is null;

我在 dst 上创建了索引来帮助解决这个问题,但是左外连接看起来仍然太重量级。有没有更规范的方法来实现这一目标?

最佳答案

只要您有 (n, m) 索引,性能就应该是可以接受的。除了你这样做的方式之外,你还可以这样做:

insert into dst(n, m)
select distinct src.n, src.m
from src
where NOT EXISTS (select 1 from dst D2 where src.n = D2.n and src.m = D2.m)

关于mysql - 仅将非重复项插入没有键的 MySQL 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22922954/

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