[英]Indexed view and T-sql that give same results as DISTINCT in SQL Server 2008 R2
我想用這樣的T-SQL創建索引視圖MyView
Select
o.Theme_ID as Theme_ID,
DATEADD(day, DATEDIFF(day, 0, o.Object_CreationDate), 0) as Objext_CreationDate,
Count_BIG(*) as ObjectCount, o.Object_Tonality from [dbo].Object o
inner join [dbo].Theme t on o.Theme_ID = t.Theme_ID
inner join [dbo].[ThemeWorkplace] tw on t.Theme_ID = tw.Theme_ID
inner join [dbo].Workplace w on w.Workplace_ID = tw.Workplace_ID
... where t.Theme_DeletedMark = 0
AND (w.Workplace_AccessType = 1 OR w.Workplace_AccessType = 8)
AND Object_DeletedMark = 0 ...
Group BY o.Theme_ID,o.Object_Tonality, DATEADD(day, DATEDIFF(day, 0, o.Object_CreationDate), 0)
該t-sql可以正常工作,並允許在MyView上設置聚簇索引。
問題在於表ThemeWorkplace
包含具有相同Theme_ID
多個記錄。 而且甚至我使用GROUP BY
我得到的Object_Count
值
等於:(實際Object_Count
值)* count( Theme_ID
中的ThemeWorkplace
)。
我不能在t-sql中使用DISTINCT
單詞,因為在這種情況下,無法在視圖上創建索引。
我認為要獲得正確的結果有什么建議?
正如您已經指出的,創建索引視圖有很多限制。 禁止使用可能在這里對您有所幫助的技術,例如獨立查詢或子查詢。 我認為在這種特殊情況下,您需要犧牲實現視圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.