2016-09-08 16 views
2

SQL Serverの土地で4年以上働いた後、私はOracle Worldで3週間働いています。今、私は、Oracleのローカルtempテーブルが不足していることをわかっています。Oracleのテンポラリテーブル:大きなクエリをステップに分割する

レポートのデータウェアハウスの代わりに、大量の正規化されたデータからレポートをまとめることがよくあります。すべてのロジックを1つの巨大なクエリ(つまり、多数の結合、サブクエリ、相関サブクエリ、ユニオンなどを持つもの)に詰め込むことが、ひどいパフォーマンスのレシピであることをすぐに知った。プロセスをより小さなステップに適切に分割し、インデックス付きのテンポラリテーブル(プロシージャ内またはアドホックスクリプト内でオンザフライで作成および変更できる)を使用することは、しばしば指数関数的に高速でした。

Oracleには、ローカルの一時表はありません。私は明らかに永続的なテーブルを作成する権限も与えられていないグローバルな一時テーブルを作成することはできません。私はグーグルの「テンポラリ・テーブル・パーミッション」をグーグル・グーグルで返しました。first linkは、回答が「」で始まるフォーラムの質問です。指摘されているように、極端にです。グローバル・テンポラリ・テーブルを作成できるユーザーは珍しいですが、恒久的なテーブルではありません。私はそれが理にかなっているシナリオを想像するのは非常に難しいです。 "これは私のプロダクト環境で使用できるものです。私のSQL Serverの心は吹かれました。

ほとんどの場合、グローバルな一時表を使用できますが、Oracleでこのような方法で使用するのは珍しいことですか?どのようなものがあれば、テンポラリテーブルを使用せずに同様のステップバイステップロジックを実装することができますか?アドホックスクリプトでは、インデックスを作成したデータセットと同様のものを保存して後で再利用することはできますか?私は明らかにサブクエリやCTE以外のものを探しています。

私は何かが欠けする必要があります

...私たちは、あなたが永続表領域上の任意のクォータを取り消すことができる回避策として、このようなprivilege.butを持っていない

+1

私は複雑なクエリへのあなたのアプローチが好きです。一時テーブルに関して。多分興味深い? [Oracleでの一時テーブルの作成方法](http://stackoverflow.com/questions/2671518/how-to-create-a-temporary-table-in-oracle)。私は以前と同じようなやり方で働くことができると思いますか? –

+0

マテリアライズド・ビューは、おそらく? https://docs.oracle.com/cd/E11882_01/server.112/e25554/basicmv.htm#DWHSG008 – mathguy

+0

先進的なOracleに少し目を向けると、メモリ内で多くをプレイできることがわかります。レコード、オブジェクトを一時的に保持するオブジェクト、および中間のクエリ結果セットを作成できます。 – XING

答えて

0

unfortunaltyは、ユーザーが任意の永続的table.ofのコースを作成することはできません繰延セグメント作成機能を使用する11gでは、ユーザーは表を作成できますが、行を挿入することはできません。一時表領域は一時表領域を使用するため、問題は発生しません。 Mohsen

関連する問題