У меня есть 2 таблицы (A и B) с теми же первичными ключами. Я хочу выбрать все строки, которые находятся в A, а не в B. Следующие работы:
select * from A where not exists (select * from B where A.pk=B.pk);
однако это кажется довольно плохим (~ 2 секунды только на 100k строк в и на 3-10k меньше в B)
Есть ли лучший способ запустить это? Возможно, как левое соединение?
select * from A left join B on A.x=B.y where B.y is null;
По моим данным, это выглядит немного быстрее (~ 10%), но как вообще?