Я запутался в этих двух и попытался выяснить различия, но не нашел чего-то конкретного, что я ищу.

  • Где использовать индексированное представление вместо обычного представления.
  • Некоторые важные различия между ними.
5
IShubh 14 Сен 2018 в 10:03

2 ответа

Лучший ответ

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

В этом есть как преимущества, так и проблемы. Заметные преимущества:

  • Часто используемые запросы можно инкапсулировать в представление и индексировать для повышения производительности чтения (сравните текущий выбор из одной таблицы с, например, 5 объединенными таблицами)
  • Агрегации могут быть вычислены заранее, что также улучшит производительность чтения.

Недостатки :

  • Это, безусловно, повлияет на производительность записи, потому что при каждой операции DML SQL Server должен будет обновлять представление. Это можно увидеть в планах выполнения.
  • Это может негативно повлиять на производительность репликации, если подписчик создает представление материала из реплицированной таблицы.
  • Множество ограничений для создания индексированного представления
  • Если вы используете версию SQL Server, отличную от корпоративной, необходимо добавить подсказку WITH (NOEXPAND), иначе SQL Server расширит представление и просто запустит в нем оператор SQL, полностью игнорируя индекс.
  • Администраторы баз данных обычно избегают их, потому что они требуют дополнительного обслуживания.
4
Evaldas Buinauskas 14 Сен 2018 в 07:11

Представления (неиндексированные) на самом деле не более чем способ поместить запрос в красивую, чистую, табличную вещь. Он не занимает места, потому что ничего не содержит, пока не будет запрошен. Практически нет ограничений на то, что вы можете или не можете указать в указанном запросе.

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

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

В конце концов, если вам нужно индексированное представление, вам нужно индексированное представление. Но по умолчанию они, вероятно, больше проблем, чем они того стоят.

0
Xedni 14 Сен 2018 в 07:13