Optymalizacja danych nie wchodzi w gre. Indeksy są założone na id i na kolumnach klucza.
Być może ktoś ma pomysł jak to obejść np. kilkoma operacjami ewentualnie zna jakąś magię oracle-ową
Poniżej prezentuje sposób ale dla kilkunastu kolumn należących do klucza jest niewydajny.
SELECT ..... FROM table_name1 a WHERE EXISTS ( SELECT count(1) FROM table_name2 b WHERE a.kolumna1 = b.kolumna1 OR (a.kolumna1 IS NULL AND b.kolumna1 IS NULL) AND a.kolumna2 = b.kolumna2 OR (a.kolumna2 IS NULL AND b.kolumna2 IS NULL) ... .. AND (a.id <> b.id) );