そんな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
です。そして、私も使用します-
(実際の値) * count( in ) に等しい値GROUP BY
を取得します。Object_Count
Object_Count
Theme_ID
ThemeWorkplace
DISTINCT
この場合、ビューにインデックスを作成することは不可能であるため、t-sql で word を使用することはできません。
私の意見で正しい結果を得るための提案は何ですか?