2013-11-13 3 views
1

Создал представление на столе, и я бы хотел создать индекс на этом представлении. Когда я создавал индекс только в представлении, мой запрос не использует индекс, но когда я создаю индекс в таблице и следующий тот же индекс в представлении, используйте индекс использования запроса.SQL Server: Создать индекс на вид

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

Спасибо, продвинутый!

+0

Было ли ваше представление правильно созданным с помощью опции 'СО СХЕМА? –

+0

Вы можете, конечно, сделать индексированные представления, хотя у них есть некоторые ограничения. Без лишней информации мы не можем сказать, поможет ли вам индексирование. – Andrew

ответ

0

Если ваш запрос упоминает базовые таблицы, оптимизатор может использовать индекс в представлении только в Enterprise Edition. Если ваш запрос упоминает индекс, вы можете заставить индекс в запросе:

SELECT * 
FROM MyView WITH (INDEX = MyIndex) 

Но будьте осторожны: это может привести к ухудшению характеристик, если оптимизатор был прав, в первую очередь.

+1

Это неправда. Вы можете использовать NOEXPAND в стандартной версии, чтобы использовать индексированное представление. http://msdn.microsoft.com/en-us/library/ms187373.aspx –

+0

спасибо, я не знал –

Смежные вопросы