2010-05-07 133 views
4

好,我很困惑的SQL Server索引視圖

我有一個索引視圖的SQL Server索引視圖(使用2008)稱爲

AssignmentDetail

當我在看的執行計劃

對於

select * from AssignmentDetail 

它表明索引視圖應該抽象掉所有其他表的所有底層索引的執行計劃。

我認爲執行計劃只會是PK_AssignmentDetail(我的視圖的聚集索引的名稱)的聚簇索引掃描,但它不會。

這個索引視圖似乎沒有性能增益我該怎麼做?我是否也應該爲所有列創建非聚集索引,以便它不必擊中所有其他索引?

任何有識之士將不勝感激

回答

5

的SQL Server企業版是足夠聰明地尋找和使用索引視圖時,它們存在。不過,如果你沒有運行企業版,你需要明確地告訴它使用索引視圖,像這樣:

select * 
from AssignmentDetail WITH (NOEXPAND) 
2

索引視圖的點不加快

SELECT * FROM MyView 

它會幫助你提高性能的東西就是視圖本身的一列,例如。

因此,您可以對ViewColumnA和ViewColumnB指數可能在不同的表中實際存在的。

+1

重新「選擇*不是重點」 - 怎麼樣?當底層視圖包含22個連接,16個過濾器和一個馬戲團小馬時,不會加速實現索引視圖點的實現**。 – EBarr 2012-09-28 18:11:07

+0

@EBarr取決於,小馬是什麼顏色? – RedFilter 2012-09-28 23:57:29

+0

@紅色過濾器 - 白色和灰色,橙色鬃毛;畢竟這是StackOverflow。 – EBarr 2012-09-29 01:32:53