【发布时间】:2017-12-12 11:23:28
【问题描述】:
我想知道我是否可以从另一个具有完全相同结构的表中复制 oracle 表内容。我想复制所有数据(或有时是其中的一部分),包括计算的索引。也就是说,我不想重做索引的计算,或者重建它们。这可以做到吗?一个相关的问题:oracle在计算索引时将信息存储在哪里?
【问题讨论】:
标签: oracle copying database-indexes
我想知道我是否可以从另一个具有完全相同结构的表中复制 oracle 表内容。我想复制所有数据(或有时是其中的一部分),包括计算的索引。也就是说,我不想重做索引的计算,或者重建它们。这可以做到吗?一个相关的问题:oracle在计算索引时将信息存储在哪里?
【问题讨论】:
标签: oracle copying database-indexes
不能将计算出的索引复制到另一个表,因为索引中包含的 ROWID 是表行的物理地址(对象标识符、文件标识符、块 ID、块中的偏移量)。 您必须为新表创建自己的索引。 新索引的行将包含新表的物理地址。 (新对象标识符、文件标识符、块标识符、块中的偏移量)
为了提高索引创建速度,您可以使用并行索引创建。 并行索引构建/扫描仅适用于企业版。
CREATE INDEX my_idex ON my_table(p1, p2, p_id) PARALLEL 35;
【讨论】:
我怀疑您是否可以将计算出的索引复制到另一个表中。但是您可以将整个内容复制到另一个表中,例如
将表目标创建为 从源中选择 *;
并且在 all_indexes 中可以看到索引信息。
【讨论】:
create table dest from source 没有将索引放入结果表中。我的目标是使用带有索引的目标表..我想避免重新创建它们并重新计算它们..(因为在巨大的表上它可能非常耗时,并且它们已经在源表中计算了..)