Вот мой вариант использования: я хотел бы отфильтровать все записи по одному условию и дополнительно отфильтровать некоторые записи по дополнительному условию.
EDITED
Вот два условия:
- все записи должны соответствовать условию
created_at > SYSDATE + 30
- записей из таблица пользователи , которые имеют (совместно используют) тот же идентификатор, что и в таблице черный список (
join on u.id = b.id
), где столбец конечная точка равен XYZ
, должен иметь столбец delayed_until , который соответствует критерию older than now
. Если конечная точка не равна XYZ
, применяется только 1-е условие.
Я задал следующий запрос:
SELECT * users u
left join blacklist b
ON u.id = b.id
AND b.delayed_until < SYSDATE
AND u.endpoint = 'XYZ'
WHERE u.created_at > SYSDATE + 30;
Вот мой схема (упрощенная):

Мой запрос выполняет то, что предполагалось? Можно ли переписать его так, чтобы оно было быстрее? Если да, то как?