我有一个索引,我必须删除一列并重新索引以进行重建:
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
答案 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
);