Это зависит от плана запроса, который определяется сметной стоимостью каждого рассматриваемого альтернативного плана, который даст правильные результаты.
Если предикат 'cheapLookup = 1' может использовать индекс, и этодостаточно избирательно, SQL Server, скорее всего, выберет поиск по этому индексу и применит второй предикат в качестве остатка (то есть, оценивая его только в строках, которые соответствуют операции поиска).
С другой стороны,если cheapLookup не является ведущим ключом в индексе или если он не очень избирателен, SQL Server может выбрать сканирование, применяя оба предиката для каждой встреченной строки.
Второй предикат не будет выбран для поискаоперации, если только не будет индексированный вычисляемый столбец во всем выражении, и использование этого индекса оказывается самым дешевым способом выполнения всего запроса.Если подходящий индекс существует, SQL Server будет искать «второй результат предиката <0,9» и применять «cheapLookup = 1» в качестве остатка.Существует также вероятность того, что индексированный вычисляемый столбец имеет в качестве второго ключа cheapLookup, что приведет к чистому поиску без остатка. </p>
Еще одна вещь, связанная со вторым предикатом, заключается в том, что без вычисляемого столбца (или не индексируется), SQL Server придется угадывать селективность выражения.С вычисляемым столбцом сервер может создавать статистику по столбцу выражения-результата, что поможет оптимизатору.Обратите внимание, что вычисляемый столбец «CAST (someField as FLOAT) / otherField» должен быть сохранен до того, как его можно будет проиндексировать или создать для него статистику, поскольку он содержит неточный тип данных.
В итоге,дело не в сложности выражения, а в предполагаемой стоимости всего плана, который использует каждый из доступных методов доступа, рассмотренных оптимизатором.