ITPub博客

Oracle 12c新特性之:使用高级索引压缩创建索引

原创 Oracle 作者:jelephant 时间:2016-12-09 23:22:40 0 删除 编辑

使用高级索引压缩创建索引减少了所有支持的唯一和非唯一索引的大小。 高级索引压缩显着提高了压缩率,同时仍提供对索引的有效访问。 因此,高级索引压缩在所有支持的索引上工作良好。

注:

此功能自Oracle Database 12c第1版(12.1.0.2)开始提供。

对于分区索引,可以在分区基础上指定压缩类型。 你还可以对索引分区指定高级索引压缩,即使父索引未压缩。

高级索引压缩在块级别工作,为每个块提供最佳压缩。 当执行 CREATE INDEX DDL语句时,块用行填充。 当它已满时,如果保存足够的空间插入下一行,则使用高级索引压缩进行压缩。 当执行DML语句或其他类型的DDL语句,并且块已满并将要拆分时,可以使用高级索引压缩来重新压缩该块,以避免在保存足够空间以插入传入关键字时进行拆分。

在启用高级索引压缩之前,数据库必须具有12.1.0或更高的兼容性级别。 您可以使用COMPRESS ADVANCED LOW子句启用高级索引压缩。 例如,以下语句在创建 hr.emp_mndp_ix 索引期间启用高级索引压缩:

CREATE INDEX hr.emp_mndp_ix ON hr.employees(manager_id, department_id)
   COMPRESS ADVANCED LOW;

你还可以在索引重建期间指定 COMPRESS ADVANCED LOW 子句。 例如,在重建期间,你可以对 hr.emp_manager_ix 索引启用高级索引压缩,如下所示:

ALTER INDEX hr.emp_manager_ix REBUILD COMPRESS ADVANCED LOW;

ALL_INDEXESALL_IND_PARTITIONSALL_IND_SUBPARTITIONS 视图中的 COMPRESSION 列显示索引是否被压缩,如果压缩,则索引的启用压缩类型。

注:

  • 位图索引或索引组织表不支持高级索引压缩。

  • 不能在单个列唯一索引上指定高级索引压缩。

请登录后发表评论 登录
全部评论

注册时间:2013-12-07

  • 博文量
    136
  • 访问量
    608488