Вопрос

Хорошо, я запутался о проиндексированных представлениях SQL Server (используя 2008)

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

НазначениеDetail.

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

select * from AssignmentDetail

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

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

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

Любое понимание было бы очень оценено

Это было полезно?

Решение

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

select * 
from AssignmentDetail WITH (NOEXPAND)

Другие советы

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

SELECT * FROM MyView

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

SELECT * FROM MyView WHERE ViewColumnA = 'A' and ViewColumnB = 'B'

Поэтому вы можете иметь индекс в ViewColumna и ViewColumnbb, которые действительно могут существовать на разных таблицах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top