从oracle 12.1.0.2版本起,创建索引时可以通过COMPRESS ADVANCED LOW对index进行压缩
语法
create index index_name on table_name(col_name) COMPRESS ADVANCED LOW;
alter index index_name REBUILD COMPRESS ADVANCED LOW;
压缩空间对比
create table ddeng as select * from dba_objects;
create index idx_ddeng on ddeng(object_id,object_name,owner);
-- 暂用空间大小
SQL> select segment_name,bytes/1024/1024 from dba_segments where segment_name = 'IDX_DDENG';
SEGMENT_NAME BYTES/1024/1024
-------------------- ---------------
IDX_DDENG 80
-- 压缩后
SQL> alter index idx_ddeng REBUILD COMPRESS ADVANCED LOW;
Index altered.
SQL> select segment_name,bytes/1024/1024 from dba_segments where segment_name = 'IDX_DDENG';
SEGMENT_NAME BYTES/1024/1024
-------------------- ---------------
IDX_DDENG 22
启用COMPRESS ADVANCED LOW 在 dba_indexes.compression 值显示为Enable
Note:
Advanced index compression is not supported for bitmap indexes or index-organized tables.
Advanced index compression cannot be specified on a single column unique index.