重建主键索引为非压缩索引

Posted littlepai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重建主键索引为非压缩索引相关的知识,希望对你有一定的参考价值。

重建主键索引为非压缩索引

删除约束的同时删除该约束对应的索引

数据库:Oracle 11.2.0.4
因为项目需要,需要将一个主键索引由压缩索引改为非压缩索引
这里的index_name代表了主键名称,也代表主键索引名称,两个同名

坑1

drop index index_name --这个不可以的原因是该分区表是组合分区表,分区和子分区

坑2

--这里不成功的原因在于 alter table table_name drop constraint index_name;
--虽然创建逐渐的时候是using index自动创建的索引
--但是这个删除还是只是删除的主键约束,没删掉索引,所以索引还是旧的(压缩索引)

--Create NOCOMPRESS index
alter table table_name drop constraint index_name;

-- Create/Recreate primary, unique and foreign key constraints 
alter table table_name
  add constraint index_name primary key (col1, col2, col2)
  using index 
  local
  NOCOMPRESS;--"注意这里,改为非压缩"
alter index index_name nologging;

成功

--只要将删除语句改为alter table table_name drop primary key drop index;即可
--这里显式指定要删除index

--Create NOCOMPRESS index
alter table table_name drop primary key drop index;--"注意这里"

-- Create/Recreate primary, unique and foreign key constraints 
alter table table_name
  add constraint index primary key (col1, col2, col3)
  using index 
  local
  NOCOMPRESS;--"注意这里,改为非压缩"
alter index index_name nologging;

以上是关于重建主键索引为非压缩索引的主要内容,如果未能解决你的问题,请参考以下文章

mysql 主键和唯一索引的区别

oracle索引问题,删除再重建索引与索引分析

Mysql知识点整理

oracle 数据库中主键索引和唯一索引有啥区别

sqlserver 索引

oracle在建表时如何指定主键的索引名和主键的表空间