Мне нужно скопировать строки из таблицы B в таблицу A. Требуется только вставить строки, которых еще нет в 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 будет иметь менее 50 000 строк, а таблица A всегда будет равна или больше по размеру таблице B в 1-5 раз.
Если у кого-нибудь есть другие более эффективные способы сделать это, скажите.