考慮這個SQL無法創建索引視圖
CREATE VIEW [dbo].[MyView1] ([ID],[VisitDate],[StartDate] ,[EndDate],[MyCount])
WITH SCHEMABINDING
AS
SELECT id, VisitDate,dateadd(dd,-10,VisitDate),dateadd(dd,10,VisitDate),
count_BIG(*)as MyCount
FROM dbo.Visits2
group by id,VisitDate
我試圖創建的ID這一觀點聚集索引,VisitDate.I正在以下錯誤。
無法創建聚集索引「IX_!」對視圖「CI_DB.dbo.MyView4」 ,因爲該視圖的選擇列表包含關於 聚合函數的結果或分組列的表達式。
考慮刪除聚合函數結果上的表達式或 從選擇列表中分組列。
我將不包括在該定義中的2分計算列反正即使你發現周圍的錯誤的方式。這在運行時計算並不重要,只是意味着視圖存儲需要更多頁面。 –
@Martin。但是我有一個關於Visitdate的索引,當我使用這個dateadd時,我的索引是沒有意義的嗎?我真的希望這些被預先計算並堅持下去。如果你做了' –
索引將不會被使用WHERE DATEADD(DD,-10,VisitDate)= @ startdate'但是這當然是很容易重新安排爲'WHERE VisitDate = DATEADD(DD,10,@開始日期) ' –