Я пытался выяснить, какие агрегаты я могу использовать для создания индексированного представления. FYI: Я мог бы создать его с SUM()
. Я также обнаружил, что не могу создать индексированный вид с MIN
, MAX
и AVG
. Как насчет других? Возможно? Я не мог найти никакой информации в Интернете, также не мог заставить ее работать на моем компьютере.Какие типы агрегатов я могу использовать для создания индексированного представления
ответ
Согласно TechNet, скалярные агрегаты поддерживаются в индексированных представлениях. Что касается того, почему Min/Max не поддерживается, см. this answer.
sqlmag.com говорит:
Do Index Сортировка, группировка и Агрегирование Колонны
Кроме того, необходимо рассмотреть вопрос о индексации столбцов, которые используются по заказу и те, которые вы используете в группировке выражения. Вам может быть полезно проиндексировать столбцы, которые используются для объединения данных в функции MIN()
, MAX()
, COUNT()
, SUM()
и AVG()
. Когда вы используете функции MIN()
и MAX()
, SQL Server выполняет простой поиск минимального и максимального значений в столбце, соответственно. Если значения данных индекса расположены в порядке возрастания, SQL Server может считывать индекс, чтобы быстро определить правильные значения MIN()
или MAX()
. Запрос диапазона значений включает в себя фильтр или ограничение (выраженное в предложении SELECT
запроса WHERE
или HAVING
), чтобы ограничить строки, возвращаемые запросом. Аналогично, если у вас есть индекс, вы можете оптимизировать сортировку данных (используя предложение ORDER BY
) и группировку данных (используя предложение GROUP BY
), особенно если в таблице или таблицах, которые вы запрашиваете, содержится много строк.