この投稿に とdata-warehouse
のタグを付けたことを考えるdatamart
と、FT テーブルはある種の事実であり、クエリは次のようになっているとしか思えません。
select
CalendarMonth
, sum(x) as Tot_1
, sum(x) * sum(y) as Tot_2
, sum(x) + sum(z) as Tot_3
from FT as f
join dimDate as d on d.DateKey = f.DateKey
join dimUser as u on u.UserKey = f.UserKey
join dimProduct as p on p.ProductKey = f.ProductKey
where CalendarYear between 2008 and 2010
and Country = 'United States'
and ProductCategory = 'Cool Gadget'
and UserGender = 'Female'
group by CalendarMonth ;
これは、ファクト テーブル内のメジャーの集計がどのように見えるかです。
現在、レポートの目的で、レポートを高速化するための集計テーブル (FA) があるようです。ウェアハウスは一晩でロードされ、クエリは営業時間前の朝に時々集計を準備するため、1 日に 1 回実行されるか、少なくとも実行されると推測できます。このクエリの実行に時間がかかりすぎる場合は、集計テーブル (FA) にいくつかのキー フィールド (通常は DateKey) を追加してから、FA テーブルを定期的に更新することを検討してください。
たとえば、1 日あたりの売上が 10,000 の場合、上記のクエリの合計は各月で 300,000 行になります。集計テーブルが 1 日ごとに集計される場合、テーブルを更新するために 1 日 1 回合計 10,000 行が必要ですが、レポートには 1 か月あたり合計 30 行しか必要ありません。
要約すると、ファクト集計クエリを高速化するために、集計関数ではなく、集計される行数に注目します。また、ディメンション テーブルには、クエリの WHERE 句で指定された列にインデックスがあることを確認してください。
確かに、ここではあまりにも多くのことを想定しすぎている可能性があるため、これは役立つ場合とそうでない場合があります。