Как индексы работают с представлениями? - PullRequest
17 голосов
/ 12 ноября 2009

Может кто-нибудь объяснить мне простым языком, как работает индекс для представления? У меня довольно простое понимание индексов на таблицах; как индексирование представления будет работать иначе, чем просто позволить индексам в базовых таблицах делать свое дело естественным образом?

Ответы [ 3 ]

10 голосов
/ 12 ноября 2009

Скажем, у вас есть представление, которое ограничивает таблицу определенными строками:

create view dbo.vw_HotProducts
as
select * from dbo.Products where Hot = 1

Теперь, если вы создаете индекс для этого представления, он содержит только горячие продукты. Вы можете сравнить его с сохранением результата представления во временной таблице. Это может быть очень полезно для сложных запросов с несколькими объединениями; в основном их вывод кешируется.

Большой недостаток индексированных представлений заключается в том, что они воссоздаются при каждом изменении данных базовой таблицы. Это ограничивает использование индексированных представлений данными, которые не изменяются часто, обычно в хранилище данных или в среде бизнес-аналитики.

6 голосов
/ 12 ноября 2009

Представление само по себе не является реальным или "постоянным" и не имеет никакого выигрыша в производительности. Это просто макрос , который расширяется.

Добавьте индекс, и он физически существует (сохраняется), поэтому оптимизатор рассмотрит его использование. Тогда это не макрос.

Я уверен, что Oracle называет их "материализованными представлениями", что лучше.

Соответствующее примечание: вычисляемый столбец имеет опцию PERSISTED, которая делает то же самое ...

6 голосов
/ 12 ноября 2009

См. http://msdn.microsoft.com/en-us/library/aa258260(SQL.80).aspx

Создание уникального кластеризованного индекса на представление улучшает производительность запросов потому что представление хранится в база данных таким же образом, таблица с Кластерный индекс сохраняется.

Представление преобразуется из правильного представления в таблицу. Определение представления используется для обновления этой таблицы.

Oracle называет эти "материализованные представления".

...