2011-12-19 6 views
1

私はテーブルファイナンス(列:日付、月、四半期、金額、金額、col1、col2、col3)を持っています。Oracleデータベースから何百万行ものテーブルを照会しています

単に...

select sum(amount_usd) from finance 
group by date 

を照会する5秒かかり

... 6秒

select sum(amount_usd) from finance 
group by quarter 

かかり... 7秒

select sum(amount_usd) from finance 
group by month 

を取り

私はデータウェアハウスを考えました

私は、四半期の子として

  • 月の月の子として

    • 日付などの時間DIMENTIONと階層を作成している

    は今、私は何だろう

    ...立ち往生しています私の事実のテーブルですか? ファクトテーブルからデータをクエリする方法はありますか?

    これは非常に基本的な質問かもしれません。しかし、私はこれに新しいです。

    おかげ

  • +1

    "私のクエリがゆっくり実行される"から "データウェアハウスが必要です"という大きなステップです。 「何百万」という行がいくつあり、インデックス作成、パーティション化されたテーブルなどの方法を使用してパフォーマンスを向上させようとしていますか?データウェアハウスでは、説明したものと非常によく似たクエリが使用される可能性があるため、ここで期待していることについてより具体的に説明する必要があります。 – Pondlife

    +1

    日付の列は、データを分割する理想的な列であるようです。 –

    +0

    @Pondlife ...実際に私は知りたいと思っていました...私の次元はパフォーマンスに役立ちます...私は時間の次元を作成したようですが、いつ使用しますか...ファクトテーブルは私の財務テーブルにすることができますか、別の1つを持っている...そしてはいすべてのインデックスはテーブルに約100万行を持っています....私の単純なquerysは時間がかかり、データウェアハウスの概念を持っていると思った....ありがとう – Avi

    答えて

    6

    "ので、私の簡単なquerysは、時間とデータ 倉庫の概念を持っていることの思考を取っている..."

    7秒を遅くされていません。少なくとも、「データウェアハウスが必要」というのは遅いです。データウェアハウスは、チューニング手法ではなく戦略的な(通常エンタープライズレベルの)環境です。

    しかし、画面を更新するのを待っているOLTPユーザーにとっては気になることに同意します。あなたがする必要があるのはクエリを調整することです。あなたはインデックスを持っていると言いますが、FINANCEテーブル全体を合計しているのであれば、おそらくインデックスを使いたくないでしょう。 Enterprise Editionのライセンスと余裕のある複数のCPUを使用している場合は、並列クエリを使用する方がよいでしょう。

    これらの財務クエリを1日に何度も実行すると、事前集計の利点が得られるかもしれませんが、経過時間の短縮がマテリアライズドビューを維持するオーバーヘッドを正当化するとは考えにくいようです。

    関連する問題