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