0

我想用这样的 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_IDin ThemeWorkplace)。

我不能DISTINCT在 t-sql 中使用 word,因为在这种情况下,不可能在视图上创建索引。

在我看来,获得正确结果的建议是什么?

4

1 回答 1

1

正如您所指出的,创建索引视图有很大的限制。禁止使用可能对您有所帮助的技术,例如 distinct 或 subquery。我认为在这种特殊情况下,您需要牺牲实现视图。

于 2010-12-17T14:36:36.193 回答