У меня сложный SQL-запрос, который можно упростить до следующего:
Select ColA,ColB,ColC,ColD
From MyTable
Where (ColA In (Select ItemID From Items Where ItemName like '%xxx%')
or ColB In (Select ItemID From Items Where ItemName like '%xxx%'))
Как вы можете видеть, суб-запрос появляется дважды. Является ли компилятор достаточно интеллектуальным для обнаружения этого и получает результат подзапроса только один раз? Или второй запрос выполняется дважды?
FYI, элементы таблицы содержат около 20 000 строк, а MyTable имеет около 200 000 строк.
Есть ли другой способ перезаписать этот оператор SQL, чтобы подзапрос появлялся/запускался только один раз?
Обновление: предложение Where в основном запросе является динамическим и добавляется только при необходимости (т.е. только когда пользователь ищет "xxx" ). Следовательно, изменения в операторе основного выбора или реструктуризации запроса невозможны.