SQL语句改变索引并添加分区

时间:2014-12-19 13:16:17

标签: sql oracle

我有一个索引,我必须删除一列并重新索引以进行重建:

ALTER INDEX <index_name> REBUILD;

重建索引时是否可以添加分区。分区将基于列索引之一,即日期时间字段。类似的东西:

ALTER INDEX <index_name> REBUILD, PARTITION BY RANGE(COLLECTIONTIME) INTERVAL (INTERVAL '15' MINUTE)
(PARTITION INITIAL_PARTITION VALUES LESS THAN (DATE '2014-10-10') );

不确定如何为它编写sql语句。有人可以帮忙吗?

另外,如果可能,现有记录也会被分区吗?

编辑:数据库是Oracle

1 个答案:

答案 0 :(得分:0)

如果要从分区表上的索引中删除列,我假设该表很大。这意味着索引重建需要时间。您可以进行在线重建,也可以只创建一个新索引,然后删除旧索引。

如果你的索引继承了分区键列,你可以在表上创建一个LOCAL,PREFIXED索引。

LOCAL表示每个索引分区只有一个表分区的记录 - 表和索引具有相同的分区结构

PREFIXED表示索引继承分区键并在读取索引时支持分区修剪。

以下命令将创建如上所述的索引。分区存储在用户的默认表空间中。分区结构与表格相同。

create index <index_name> on (<columns>) LOCAL;

如果希望将分区存储在不同的表空间中,可以使用以下命令:

create index <index_name> on (<columns>) LOCAL
 (partition <index_name>_p1 tablespace whatever_1,
  partition <index_name>_p2 tablespace whatever_2
 );