Сравнение обычных представлений и индексированных
Пересказ статьи Chad Callihan. Views vs. Indexed Views
Давайте рассмотрим преимущества и недостатки представлений SQL.
Запрос к нескольким таблицам можно облегчить с помощью представлений. Запрос к единственному представлению (SELECT * FROM MyView) короче по сравнению с запросом, в котором соединяется несколько таблиц для получения результата.
Представления также можно использовать для усиления безопасности, разрешая пользователям доступ только к определенным столбцам в таблицах, определенных в представлении.
За такую гибкость приходится платить, и эта плата растет с размером ваших данных. При обращении к представлению SQL Server все еще должен извлекать данные из таблиц, упомянутых в представлении. Важно то, что происходит внутри.
Вы столкнулись с тем, что узким местом в производительности запросов оказалось представление? Рассмотрите возможность создания уникального кластеризованного индекса (а затем любых дополнительных некластеризованных индексов) на представлении для улучшения производительности.
Давайте займемся физическими
Создание индексированных представлений может улучшить производительность запросов, поскольку данные сохраняются физически. Вместо проверки представления и выполнения всей работы по обработке данных, собираемых из нескольких таблиц, запросы к физически проиндексированному представлению выполняются просто как к таблице.
Но я слышал, что индексированные представления имеются только в редакции Enterprise Edition?
Вроде того. В Enterprise Edition оптимизатор запросов будет использовать индексированное представление, если сочтет это оптимальным планом. В других редакциях вы могли бы использовать хинт NOEXPAND, чтобы принудить использовать индексированное представление вместо обычного.
Посмотрите скриншот сравнительной таблицы различий в поддержке индексированных представлений в зависимости от редакции SQL Server 2019, взятой отсюда:
Создание индексированного представления
Если вы создавали индекс на таблице, тогда вы знаете, как создать индексированное представление.
Помните, что представление должно иметь опцию WITH SCHEMABINDING. Если в представлении соединяются данные, то вы увидите чтение данных из соответствующих таблиц:
Затем вы можете создать индекс и увидеть, что ваш план переходит от чтения из таблиц к чтению из индексированного представления:
CREATE UNIQUE CLUSTERED INDEX Indexed_View_Example
ON dbo.ComicPub (ReleaseDate, Comic_Title);
GO
Обратные ссылки
Автор не разрешил комментировать эту запись
Комментарии
Показывать комментарии Как список | Древовидной структурой