我々は、製品の属性を含む17Mil行を持つテーブルを持っているが、のは、彼らがしているとしましょう:SQL Serverの凝集体
brandID、sizeID、colorID、価格は、
をshapeIDそして、我々はを照会する必要がありますブランドとサイズ別に集計します。現在、このようなデータを照会してフィルタリングしています。
select brandID, sizeID, count(*)
from table where colorID in (1,2,3) and price=10 and shapeID=17
--"additional complex where clause here"
group by brandID, sizeID
order by brandID, sizeID
このデータを報告します。問題は、返される実際のデータがほんの数百行にもかかわらず、このクエリを実行するのに10秒ほどかかります(これは非常に簡単な例です)。
私はこのテーブルのインデックス作成能力に達していると思いますので、インデックスの量はほとんどないと思います。
OLAPやその他の分析サービスについてはほとんど分かりませんが、上記のようなクエリ(または同様の返された同等のデータ)を実行できるように、このテーブルを事前フィルタリングまたは事前集計できるSQL Serverについては何がありますか? または非常に大きなテーブルで任意のwhere句を処理する最善の方法は何ですか?
あなたは私たちのデータの周波数と新鮮さのアイデアを与えることができ、すなわち、「誰かが15分ごとにこれを実行し、データが最新のものにする必要がある」または「多くの人々が一日にこれを実行します昨日までデータを見ることができて喜んでいる」(キューブまたは索引付けされたビューの主要候補) –