Декоррелируйте запрос, используя полу соединение - PullRequest
0 голосов
/ 22 апреля 2019

Я новичок в оптимизации запросов, я не могу полностью понять, как использовать полусоединение при реализации декорреляции.

Рассмотрим запрос

        SELECT A, B
        FROM r
        WHERE r.B < SOME (
            SELECT B
            FROM s
            WHERE s.A = r.A
       )

Показать, как оформить вышеуказанный запрос, используя многократную версию операция полусоединения

1 Ответ

0 голосов
/ 22 апреля 2019

Вы можете написать свой запрос, используя внутреннее соединение, следующим образом:

SELECT DISTINCT r.A, r.B
FROM r
INNER JOIN s
    ON r.A = s.A
WHERE r.B < s.B;

В этой версии запроса необходимо условие DISTINCT, поскольку данная запись в таблице r может потенциальноприсоединиться к более чем одному совпадению в таблице s.В вашей исходной версии не может быть дубликатов, потому что предложение SOME, которое принимает набор записей any, всегда возвращает один ответ да / нет.

...