Основная проблема этого запроса в том, что он не подлежит обсуждению. Даже если столбец DATEEND
проиндексирован, индекс нельзя использовать.
Единственный способ сделать этот индекс запроса дружественным - это иметь вычисляемый столбец с определением CAST([DATEEND] as TIME)
и затем индексировать его.
Даже если вы сделаете это, вы вполне можете обнаружить, что индекс не используется, хотя это будет зависеть от того, насколько избирателен запрос. Поскольку в вашем запросе используется *
, в индексе нужно будет выполнить поиск по ключевым словам, чтобы получить не покрытые столбцы. Точная селективность, при которой будет использоваться индекс, зависит от «точки перелома»
Вы также можете сделать индекс покрывающим, пропуская INCLUDE
пропущенных столбцов, но поскольку вы выбираете все столбцы в таблице, это сделает индекс очень широким, что означает больше логических чтений для его сканирования и более дорогой вести для операторов модификации данных.