Microsoft SQL Server позволяет добавлять индекс к представлению, но зачем вам это делать?
Для ускорения запросов.
Насколько я понимаю, представление на самом деле является просто подзапросом, то есть, если я говорю SELECT * FROM myView, я действительно говорю SELECT * FROM (MyView's Query)
Не всегда.
Создавая кластеризованный индекс для представления, вы материализуете представление, и обновления к базовым таблицам физически обновляют представление. Запросы к этому представлению могут или не могут получить доступ к базовым таблицам.
Не все виды могут быть проиндексированы.
Например, если вы используете GROUP BY
в представлении, для того, чтобы оно было индексируемым, оно должно содержать COUNT_BIG
и все агрегатные функции в нем должны распределяться по UNION ALL
(только SUM
и COUNT_BIG
на самом деле). Это необходимо для того, чтобы индекс был поддерживаемым, а обновление базовых таблиц могло бы своевременно обновлять представление.