2017-12-12 10 views
0

まったく同じ構造の別のテーブルからOracleテーブルのコンテンツをコピーできるかどうかを知りたいと思います。私は、計算されたインデックスを含むすべてのデータ(または時にはその一部)をコピーしたいと思います。つまり、インデックスの計算をやり直したり、インデックスを再構築したりすることは望ましくありません。これはできますか?関連する質問:oracleはインデックスを計算するときに情報をどこに保存しますか?計算されたインデックスを持つオラクルテーブル

答えて

0

索引には表の行の物理アドレス(オブジェクト識別子、ファイル識別子、ブロックID、ブロック内のオフセット)が含まれているため、計算済索引を別の表にコピーできません。 新しいテーブルの独自のインデックスを作成する必要があります。 新しい索引の行には、新しい表の物理アドレスが入ります。 (新しいオブジェクト識別子、ファイル識別子、ブロック識別子、ブロック内のオフセット)

パラレルインデックス作成を高速化するために、インデックスの作成速度を向上させることができます。 パラレル索引ビルド/スキャンは、Enterprise Editionのみ使用できます。

CREATE INDEX my_idex ON  my_table(p1, p2, p_id) PARALLEL 35; 
+0

これは私の希望に終止符を打ったようですが、それは非常に有益な答えです! – MrSmithGoesToWashington

0

計算されたインデックスを別のテーブルにコピーすることはできません。しかし、あなたは

のように別のテーブルに内容全体をコピーすることができます。 として*ソースから選択してください。

インデックス情報はall_indexesに表示されます。

+0

返信ありがとうございます。残念なことに、 'create table dest from source'は、インデックスを結果テーブルに入れません。私の目的は、インデックスを持つ宛先テーブルを使用することです。私はそれらを再作成し、それらを再計算しないようにしたいと思います。(巨大なテーブルでは、非常に時間がかかりすぎる可能性があるので、それらはすでにソーステーブルで計算されています..) – MrSmithGoesToWashington

関連する問題