Я пытаюсь определить, может ли такая функция, как EXISTS или COALESCE, уменьшить интенсивное использование вложенных циклов при поиске любого совпадения по 300 значениям, которые могут встречаться в 16 различных столбцах.
Пользователь предоставил запросэто похоже на приведенный ниже пример, и его попросили применить его в большой складской среде, для которой он не очень эффективно масштабируется.Добавление индексов не вариант.Я могу использовать предложение WITH для размещения 300 кодов для поиска, но не могу определить, поможет ли это заставить запрос отменить сканирование таблицы после того, как будет найдено первое совпадение, и перейти к следующей записи.
SELECT
A.product_id
FROM
A inner join B on A.id = B.id
inner join C on A.id = C.id
WHERE
B.code1 in ('x1','x2','x3', ... 'x298', 'x299', 'x300')
or B.code2 in ('x1','x2','x3', ... 'x298', 'x299', 'x300')
or C.code3 in ('x1','x2','x3', ... 'x298', 'x299', 'x300')
...
or C.code15 in ('x1','x2','x3', ... 'x298', 'x299', 'x300')
or C.code16 in ('x1','x2','x3', ... 'x298', 'x299', 'x300')
Хотя поставляемый код работает, его стоимость высока, и я был бы признателен за помощь в улучшении времени выполнения.