使用计算索引复制 oracle table

copying oracle table with calculated indexes

我想知道是否可以从具有完全相同结构的另一个 table 复制 oracle table 内容。我想复制所有数据(或有时是其中的一部分),包括计算出的索引。也就是说,我不想重做索引的计算,或者重建它们。这可以做到吗?一个相关的问题:oracle在计算索引时将信息存储在哪里?

我怀疑你能否在另一个 table 中复制计算出的索引。但是您可以将全部内容复制到另一个 table 中,例如

创建 table 目的地为 Select * 来自来源;

并且在all_indexes中可以看到索引信息。

不能将计算出的索引复制到另一个table因为索引包含ROWID是table行的物理地址(对象标识符,文件标识符,块ID,块中的偏移量). 您必须为新 table 创建自己的索引。 新索引的行将包含新 table 的物理地址。 (新对象标识符、文件标识符、块标识符、块中的偏移量)

要提高索引创建速度,可以使用并行索引创建。 并行索引 build/scans 仅适用于企业版。

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