2009-06-18 12 views
1

我想創建一個索引視圖,該視圖集成了多個表中的數據,但SQL Server抱怨錯誤消息:無法在視圖上創建CLUSTERED INDEX,因爲我引用同一個表兩次,任何解決方法?

無法在視圖「MyView」上創建索引。該視圖包含「dbo.Companies」的自我加入。

視圖定義是這樣的(簡本):

SELECT T.Field1 
     , T.Field2 
     , P.CompanyName AS ProviderName 
     , C.CompanyName AS CustomerName 
     , T3.Field1 
FROM dbo.Table1 T 
        INNER JOIN dbo.Companies P ON T.ProviderId = T2.Id 
        INNER JOIN dbo.Companies C ON T.CustomerId = T2.Id 
        INNER JOIN dbo.Table3 ON T.Id = T3.Id 

是否有此情況下,任何解決方法嗎?我不想將兩個表中的公司表拆分。

在此先感謝。

回答

2

您將無法解決此問題,索引視圖必須符合Creating Indexed Views中列舉的某些限制。其中,外部和self連接不受支持(第10個限制從上到下)。它歸結爲引擎能夠在基表更新時更新視圖索引。

不知道確切的數據模型的所有細節,你確定索引視圖是必要的,並且不會基表索引足夠嗎?

+0

感謝您的回答。我現在使用基表,但我想簡化我的查詢並獲得性能提升作爲獎勵。我的應用程序顯示給用戶的列表之一,需要連接多個表(4或5),做一些列連接(姓+名),它也有一些'case'語句。我認爲這是一個觀點的完美案例(如果可能的話,索引),但這個限制是在我的路上。 – JAG 2009-06-18 13:28:25

相關問題