3

次のようなテーブルを含むスキーマがあります (疑似スキーマ):

TABLE ItemCollection {
   ItemCollectionId
   ...etc...
}

TABLE Item {
   ItemId,
   ItemCollectionId,
   ContributorId

}

ItemCollectionId ごとに個別の貢献者の数を集計する必要があります。これは、次のようなクエリで可能です。

SELECT ItemCollectionId, COUNT(DISTINCT ContributorId) FROM Item
 GROUP BY ItemCollectionId

さらに、インデックス付き (マテリアライズド) ビューを使用して、この集計を事前に計算したいと考えています。DISTINCT は、このビューにインデックスが配置されるのを防ぎます。SQL Server のインデックス付きビューの制約に違反しない、これを再定式化する方法はありますか?

4

2 に答える 2

2

どうやら不可能です。

于 2010-10-18T15:18:01.153 に答える
0
SELECT
   ItemCollectionId,
   COUNT(DISTINCT ContributorId),
   COUNT_BIG(*) AS DummyColumn
FROM Item
GROUP BY ItemCollectionId

MSDN に記載されているように、集約には COUNT_BIG(*) が必要です。

これは「no DISTINCT」とも言いますが、これが集計での使用に当てはまるかどうかはわかりません(試したことはありません、申し訳ありません)(あなたが持っているように)、またはSELECT DISTINCT...

于 2010-04-28T19:11:18.227 に答える