質問

インデックス付きビューを作成したいです 私の見解 そのようなT-SQLで

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は正常に動作し、クラスター化されたインデックスをに設定できます 私の見解.

問題はそのテーブルです ThemeWorkplace 同じレコードがいくつか含まれています Theme_ID。そして、私も使用します GROUP BY - 私は入ります Object_Count それを大切にします
平等:(リアル Object_Count 値) * count(Theme_IDThemeWorkplace ).

使えない DISTINCT T-SQLの単語。この場合、表示中にインデックスを作成することは不可能であるためです。

私の見解で正しい結果を得るための提案は何ですか?

役に立ちましたか?

解決

ご承知のとおり、インデックスビューの作成には大きな制限があります。別個やサブクエリなど、ここであなたを助けるかもしれないテクニックは禁止されています。この特定のケースで見解を具体化する犠牲を払う必要があると思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top