Вы можете попробовать это, посмотреть, что вы получите.Это будет сильно зависеть от индексов FIRST_NAME
и LAST_NAME
, но при этом исключается OR
.
SELECT
FIRST.NAME,
SECOND.FIRST_NAME,
SECOND.LAST_NAME
FROM FIRST_TABLE FIRST
LEFT JOIN (
SELECT S1.FIRST_NAME as TEST_NAME,
S1.FIRST_NAME,
S1.LAST_NAME
FROM SECOND_TABLE S1
WHERE S1.FIRST_NAME <> S1.LAST_NAME
UNION ALL
SELECT S2.LAST_NAME as TEST_NAME,
S2.FIRST_NAME,
S2.LAST_NAME
FROM SECOND_TABLE S2
) AS SECOND
ON FIRST.NAME = SECOND.TEST_NAME