как реализован кластерный индекс в представлении

Я могу создать кластеризованный или некластеризованный индекс для представления, и SQL SERVER говорит, что у нас может быть несколько некластеризованных индексов (максимум 249), но только один кластеризованный индекс существует в таблице или представлении. Потому что записи сортируются там, где они физически хранятся, и у нас не может быть нескольких порядков сортировки. Итак, у меня вопрос, поскольку View физически не хранится в базе данных. Затем, что, если я создам кластерный индекс для представления, а базовая таблица уже существует кластерный индекс. Как реализован кластерный индекс для просмотра? Как кластерный индекс работает и полезен при просмотре?


person Ravi    schedule 18.04.2013    source источник


Ответы (3)


Представление - это просто сохраненный запрос без материализованных данных , если у него нет кластерного индекса.

Во многих случаях люди думают, что любое старое представление можно «ускорить», добавив кластерный индекс. Это бывает очень редко. Обычно вы создаете индексированное представление для предварительного агрегирования определенных вычислений, таких как SUM или COUNT_BIG. Если вы создаете индексированное представление, которое не агрегируется и, следовательно, имеет такое же количество строк / страниц, что и базовая таблица, вы ничего не достигли (конечно, как и все, есть исключения - индекс в представлении может быть более тонкая, чем базовая таблица, например, приводит к меньшему количеству страниц).

Кстати, вы не можете создать некластеризованный индекс для представления , если сначала не создадите кластеризованный индекс. И вы также должны иметь в виду, что, как и индексы в таблице, индексированное представление не бесплатно. Хотя это может ускорить некоторые запросы, SQL Server должен поддерживать индекс на протяжении всей части вашей рабочей нагрузки DML.

Вам действительно стоит прочитать подобные документы, в котором более подробно рассказывается о преимуществах производительности индексированных представлений, и этого, который, среди прочего, документирует ограничения и ограничения.

person Aaron Bertrand    schedule 19.04.2013
comment
из вашей первой строки, когда мы создаем кластерный индекс для представления, это представление становится материализованным представлением, или мы можем создать кластерный индекс только для материализованного представления? - person Ravi; 23.04.2013
comment
Представление становится материализованным, когда вы создаете для него кластерный индекс. - person Aaron Bertrand; 23.04.2013
comment
так как я пометил sql server в своем сообщении, я задаю еще один вопрос, есть ли у sql server материализованное представление? - person Ravi; 23.04.2013
comment
Да, но это называется индексированным представлением. - person Aaron Bertrand; 23.04.2013
comment
ок .. означает, что имеет те же свойства, что и материализованное представление в оракуле. - person Ravi; 23.04.2013

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

person Sebastian Meine    schedule 18.04.2013

Когда мы добавляем уникальный кластерный индекс к представлению, мы «материализуем» его. Другими словами, «виртуальная таблица» сохраняется на диске со своей собственной структурой страниц, и мы можем обращаться с ней как с обычной таблицей. Любые агрегации, определенные индексированным представлением, теперь предварительно вычисляются, а любые соединения предварительно объединяются, поэтому механизму больше не нужно выполнять эту работу во время выполнения. SQL Server создает статистику для индексированного представления, отличную от статистики базовых таблиц, чтобы оптимизировать оценки количества элементов.

Вы можете прочитать больше на этот блог.

person Saddam Bilalov    schedule 03.12.2017