Учитывая два приведенных ниже подзапроса, сегодня мне сказали, что запрос (1) будет неэффективным, поскольку он извлечет все данные из представления, прежде чем отфильтровать их как место предложение находится вне вложенного запроса.
(1) из ORM (где снаружи)
select * from (select * from VW_LOURD) as q where q.Expr5 = 'SYNC_FLAG'
(2) от самого себя (где внутри)
select * from (select * from VW_LOURD where Expr5 = 'SYNC_FLAG') as q
Я переписал запрос, как показано на (2), чтобы иметь фильтр внутри подзапроса. Я не нашел каких-либо заметных различий в производительности. Чтобы быть уверенным, я сравнил оба плана выполнения, и они полностью одинаковы.
Я пришел к выводу, что оба запроса будут извлекать одинаковое количество данных и одинаково, независимо от того, находится ли фильтр внутри или снаружи подзапроса, однако я не уверен, что мой вывод верен на 100%, также я не уверен в состоянии объяснить, почему оба запроса похожи.