2017-12-12 3 views
0

Ich würde gerne wissen, ob ich Orakel Tabelleninhalt aus einer anderen Tabelle mit genau der gleichen Struktur kopieren kann. Ich möchte alle Daten (oder manchmal einen Teil davon) einschließlich der berechneten Indizes kopieren. Das heißt, ich möchte die Berechnungen für die Indizes nicht wiederholen oder sie neu erstellen. Kann das gemacht werden? Eine verwandte Frage: Wo speichert Oracle die Informationen, wenn es einen Index berechnet?Orakeltabelle mit berechneten Indizes kopieren

Antwort

0

Sie können den berechneten Index nicht in eine andere Tabelle kopieren, da der Index ROWID die physische Adresse der Tabellenzeile enthält (Objekt-ID, Datei-ID, Block-ID, Offset im Block). Sie müssen Ihren eigenen Index für die neue Tabelle erstellen. Die Zeilen des neuen Index enthalten die physikalische Adresse der neuen Tabelle. (neue Objektkennung, Dateikennung, Blockkennung, Offset im Block)

Um die Geschwindigkeit der Indexerstellung zu erhöhen, können Sie die parallele Indexerstellung verwenden. Paralleler Index Build/Scans ist nur verfügbar Enterprise Edition.

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

Das scheint meinen Hoffnungen ein Ende zu machen, aber es ist eine sehr informative Antwort! – MrSmithGoesToWashington

0

Ich bezweifle, dass Sie den berechneten Index in einer anderen Tabelle kopieren können. Sie können jedoch den gesamten Inhalt in eine andere Tabelle kopieren, z. B.

Tabellenziel als erstellen * aus Quelle auswählen;

Und die Indexinformationen können in all_indexes gesehen werden.

+0

Danke für die Antwort. Leider fügt das 'create table dest from source' die Indizes nicht in die resultierende Tabelle ein. Mein Ziel ist es, die Zieltabelle mit den Indizes zu verwenden. Ich möchte sie nicht neu erstellen und sie neu berechnen .. (weil auf einem riesigen Tisch es sehr zeitaufwendig sein könnte, wenn sie bereits in der Quelltabelle berechnet sind.) – MrSmithGoesToWashington

Verwandte Themen