テーブル B からテーブル A に行をコピーする必要があります。要件は、まだ A にない行のみを挿入することです。
私の質問は、次の2つのうちどちらがより効率的かということです。
A)
INSERT INTO A (x, y, z)
SELECT x, y, z
FROM B b
WHERE b.id NOT IN (SELECT id FROM A);
B)
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 倍以上であるとします。
誰かがこれを行うためのより効率的な方法を持っている場合は、教えてください。