Как индексы работают над представлениями?
Может кто-нибудь, пожалуйста, объясните мне на простом английском языке, как работает индекс в представлении? У меня довольно простое понимание индексов на таблицах; как бы индексирование представления работало иначе, чем просто дать индексы на базовых таблицах делать свою вещь естественным образом?
Ответы
Ответ 1
Скажите, что у вас есть представление, которое ограничивает таблицу для определенных строк:
create view dbo.vw_HotProducts
as
select * from dbo.Products where Hot = 1
Теперь, если вы создаете индекс в этом представлении, индекс содержит только горячие продукты. Вы можете сравнить его с сохранением результата представления во временной таблице. Это может быть очень полезно для сложных запросов с несколькими объединениями; в основном их выход кэшируется.
Большим недостатком индексированных представлений является то, что они воссоздаются каждый раз, когда изменяются основные данные таблицы. Это ограничивает использование индексированных представлений данными, которые не часто меняются, как правило, в хранилище данных или в среде бизнес-аналитики.
Ответ 2
Взгляд сам по себе не является реальным или "сохраняется" и не имеет преимущества в производительности. Это просто макрос который был расширен.
Добавьте индекс, и он физически существует (сохраняется), поэтому оптимизатор рассмотрит его использование. Это не макрос.
Я уверен, что Oracle называет их "материализованными представлениями", которые являются лучшим именем.
Связанный FYI: вычисленный столбец имеет опцию PERSISTED, которая делает то же самое...
Ответ 3
См. http://msdn.microsoft.com/en-us/library/aa258260(SQL.80).aspx
Создание уникального кластерного индекса на просмотр улучшает производительность запросов потому что представление сохраняется в базы данных так же, как таблица с кластеризованный индекс сохраняется.
Вид преобразуется из правильного представления в таблицу. Определение представления используется для обновления этой таблицы.
Oracle называет эти "материализованные представления".