SQL Server SELECT из неиндексированного представления, которое ссылается на проиндексированную таблицу - PullRequest
3 голосов
/ 27 января 2012

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

Ответы [ 4 ]

8 голосов
/ 27 января 2012

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

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

3 голосов
/ 27 января 2012

Да, когда вы выбираете из простого представления (непостоянного), SQL-сервер использует запрос представления для создания плана.

Итак, если у вас есть такой вид:

create view1 as
select ID, name from table1

и вы делаете:

select ID, name from view1

внутренне, это точно так же, как и

select ID, name from table1
1 голос
/ 27 января 2012

Если я выбираю из неиндексированного представления, а представление выбирается из индексированной таблицы,

Это невозможно.

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

Если вы не материализуете представление (совершенно другая сложная тема), представление действительно является коротким.

0 голосов
/ 27 января 2012

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

посмотрите на эту ссылку для всех входов и выходов индексированных представлений сервера sql

http://msdn.microsoft.com/en-us/library/aa933148(v=sql.80).aspx

...