2012-08-16 73 views
1

我知道我不能直接从在stackoverflow和其他网站上研究类似的问题来做到这一点。Oracle数据库,将唯一索引转换为非唯一索引

但是,我需要这样做,我愿意与解决方法。

我试图用onlineparallel创建一个非唯一索引,然后删除旧的唯一索引。但是,它没有说ORA-01408: such column list already indexed

如何将唯一索引转换为非唯一索引?

+0

您必须删除旧索引然后创建新索引。 – 2012-08-16 01:04:08

+0

@BobJarvis这种影响将如何选择性能? – Haozhun 2012-08-16 01:07:33

回答

3

如果您不想在创建新的之前删除旧索引,您可以通过一个额外的无用列创建新的索引,如骗了一下:

假设表具有以下的配置:

create table mytable (id number); 

create unique index myunique on mytable (id); 

到索引转换为非独特:

create index temp on mytable (id, 1); 

drop index myunique; 

create index mynonunique on mytable (id); 

drop index temp; 

在实践中,我不知道如何必要,这是 - 通常我只是删除并重新该指数在一些低活动期,最好是减少应用。

+0

感谢您的回答和您的建议。 – Haozhun 2012-08-16 01:35:27