2010-05-07 5 views
4

ОК, я запутался о индексированных представлениях SQL Server (с помощью 2008)Sql сервер индексируются вид

У меня есть индексный вид называется

AssignmentDetail

, когда я смотрю на план выполнения для

select * from AssignmentDetail 

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

Я бы подумал, что план выполнения woul просто представляет собой кластерное сканирование индекса PK_AssignmentDetail (имя кластерного индекса для моего представления), но это не так.

Похоже, что это индексированное представление не влияет на производительность, что я должен делать? Должен ли я также создать некластеризованный индекс со всеми столбцами, чтобы он не попадал во все остальные индексы?

Любое понимание будет высоко оценен

ответ

5

Предприятия выпуск SQL Server достаточно умен, чтобы искать и использовать индексированные представления, когда они существуют. Однако, если вы не используете корпоративную версию, вам необходимо явно указать его использовать индексированное представление, как это:

select * 
from AssignmentDetail WITH (NOEXPAND) 
2

точку индексированного представления не ускорить

SELECT * FROM MyView 

Вещь, которая поможет вам повысить производительность, - это индекс в столбце самого представления, например.

поэтому Вы можете иметь индекс ViewColumnA и ViewColumnB, которые могли бы на самом деле существуют в разных таблицах.

+1

Re "select * not the point" - Как так? Когда базовое представление содержит 22 соединения, 16 фильтров и цирковой пони не ускоряют материализацию ** одну ** точек индексированного представления? – EBarr

+0

@EBarr Зависит, какой цвет пони? – RedFilter

+0

@ RedFilter - белый и серый, с оранжевой гривой; это StackOverflow в конце концов. – EBarr