Да , представлениям может быть назначен кластерный индекс, и когда они это сделают, они будут хранить временные результаты, которые могут ускорить выполнение запросов.
Обновление: по крайней мере три человека проголосовали против меня на этом. При всем уважении, я думаю, что они просто неправы; Из собственной документации Microsoft очень ясно видно, что Views может повысить производительность.
Во-первых, простые представления расширяются и не вносят непосредственного вклада в повышение производительности - это правда. Однако индексированные представления могут значительно повысить производительность.
Позвольте мне перейти непосредственно к документации:
После создания уникального кластеризованного индекса в представлении результирующий набор представления немедленно материализуется и сохраняется в физическом хранилище в базе данных, что экономит накладные расходы на выполнение этой дорогостоящей операции во время выполнения.
Во-вторых, эти индексированные представления могут работать, даже если на них нет прямой ссылки из другого запроса, так как оптимизатор будет использовать их вместо ссылки на таблицу, когда это необходимо.
Опять документация:
Индексированное представление может использоваться в выполнении запроса двумя способами. Запрос может ссылаться на индексированное представление напрямую, или, что более важно, оптимизатор запросов может выбрать представление, если он определит, что представление может заменить часть или весь запрос в плане запроса с наименьшей стоимостью. Во втором случае используется индексированное представление вместо базовых таблиц и их обычных индексов. Нет необходимости ссылаться на представление в запросе, чтобы оптимизатор запросов использовал его во время выполнения запроса. Это позволяет существующим приложениям извлекать выгоду из недавно созданных индексированных представлений без изменения этих приложений.
Эту документацию, а также диаграммы, демонстрирующие улучшения производительности, можно найти здесь .
Обновление 2: ответ подвергся критике на том основании, что именно «индекс» обеспечивает преимущество в производительности, а не «представление». Однако это легко опровергнуть.
Допустим, мы являемся компанией-разработчиком программного обеспечения в маленькой стране; Я буду использовать Литву в качестве примера. Мы продаем программное обеспечение по всему миру и храним наши записи в базе данных SQL Server. Мы очень успешны, и через несколько лет у нас более 1 000 000 записей. Однако нам часто приходится сообщать о продажах для целей налогообложения, и мы находим, что мы продали только 100 копий нашего программного обеспечения в нашей стране. Создав индексированное представление только литовских записей, мы получаем нужные записи в индексированном кэше, как описано в документации MS. Когда мы запустим наши отчеты по продажам в Литве в 2008 году, наш запрос будет искать по индексу с глубиной всего 7 (Log2 (100) с некоторыми неиспользованными листьями). Если бы мы сделали то же самое без ПРОСМОТРА и просто полагаясь на индекс в таблице, нам пришлось бы обходить дерево индексов с глубиной поиска 21!
Ясно, что само представление даст нам преимущество в производительности (в 3 раза) по сравнению с простым использованием только индекса. Я пытался использовать пример из реальной жизни, но вы заметите, что простой список продаж в Литве даст нам еще большее преимущество.
Обратите внимание, что я просто использую прямое b-дерево для моего примера. Хотя я совершенно уверен, что SQL Server использует какой-то вариант b-дерева, я не знаю деталей. Тем не менее, точка имеет место.
Обновление 3: возник вопрос о том, использует ли индексированное представление индекс, размещенный в базовой таблице. То есть, перефразируя: «индексированное представление - это просто эквивалент стандартного индекса, и оно не предлагает ничего нового или уникального для представления». Конечно, если бы это было правдой, то приведенный выше анализ был бы неверным! Позвольте мне привести цитату из документации Microsoft, которая демонстрирует, почему я считаю эту критику недействительной или правдивой:
Использование индексов для улучшения производительности запросов - не новая концепция; однако индексированные представления обеспечивают дополнительные преимущества в производительности, которых невозможно достичь с помощью стандартных индексов.
Вместе с приведенной выше цитатой о сохранении данных в физическом хранилище и другой информацией в документации о том, как создаются индексы в представлениях, я думаю, можно с уверенностью сказать, что индексированное представление - это не просто кэшированный SQL-выбор, в котором используется Индекс определяется на главной таблице. Таким образом, я продолжаю придерживаться этого ответа.