Вы можете использовать для этого индекс, основанный на функциях, хотя для этого сценария это не очень приятно:
create index TimeSeriesPeriodSs1 on TimeSeriesPeriod (
case when validationStatus= N'Pending' and completionStatus= N'Complete' then validationStatus else null end,
case when validationStatus= N'Pending' and completionStatus= N'Complete' then completionStatus else null end);
Вам нужно будет сопоставить условие where
запросахотя именно для того, чтобы заставить его использовать индекс.
select <fields>
from TimeSeriesPeriod
where case when validationStatus= N'Pending' and completionStatus= N'Complete' then validationStatus else null end = N'Pending'
and case when validationStatus= N'Pending' and completionStatus= N'Complete' then completionStatus else null end = N'Complete';
Это было бы намного лучше, если бы вы могли определить (детерминированные) функции для выполнения case
.См. здесь для получения дополнительной информации и примеров.Или это , из быстрого Google.