我需要将表 B 中的行复制到表 A。要求是仅插入 A 中尚不存在的行。
我的问题是,以下两种中哪一种更有效:
一种)
INSERT INTO A (x, y, z)
SELECT x, y, z
FROM B b
WHERE b.id NOT IN (SELECT id FROM A);
二)
INSERT INTO A (x, y, z)
SELECT b.x, b.y, b.z
FROM B b LEFT OUTER JOIN A a
ON b.id = a.id
WHERE a.id is NULL;
我假设答案取决于桌子的大小。但我想知道在使用一种方法而不是另一种方法方面是否存在明显的问题。
为了减少模糊性,假设表 B 的行数少于 50K,表 A 的大小始终等于或大于表 B 的 1-5 倍。
如果有人有其他更有效的方法来做到这一点,请告诉。