探究Oracle 12c 中在同一个列上建立多个索引

探究Oracle 12c 中在同一个列上建立多个索引

Oracle 12c允许在同一组列上建立多个索引,但是只有一个索引是可见的,并且所有索引在某些方面可以有不同。 

示例

Non-Partitioned Tables

例如,我们可以创建一个非分区表t1,并插入测试数据。

然后在 create_date列上创建一个索引;当第二次使用语句 

CREATE INDEX t1_idx2 ON t1(created_date) INVISIBLE;

在 created_date列上再次创建索引时,提示错误。

SQL> CREATE TABLE t1 (
  2    id            NUMBER,
  3    description   VARCHAR2(50),
  4    created_date  DATE
  5  );

表已创建。

已用时间:  00: 00: 00.08
SQL>
SQL> INSERT INTO t1 VALUES (1, 't1 ONE', TO_DATE('01/07/2014', 'DD/MM/YYYY'));

已创建 1 行。

已用时间:  00: 00: 00.03

SQL> INSERT INTO t1 VALUES (2, 't1 TWO', TO_DATE('01/07/2015', 'DD/MM/YYYY'));

已创建 1 行。

已用时间:  00: 00: 00.01


SQL> INSERT INTO t1 VALUES (3, 't1 THREE', TO_DATE('01/07/2016', 'DD/MM/YYYY'));

已创建 1 行。

已用时间:  00: 00: 00.00


SQL> COMMIT;

提交完成。

已用时间:  00: 00: 00.00
SQL> CREATE INDEX t1_idx1 ON t1(created_date) VISIBLE;

索引已创建。

已用时间:  00: 00: 00.01
SQL> CREATE INDEX t1_idx2 ON t1(created_date) INVISIBLE;
CREATE INDEX t1_idx2 ON t1(created_date) INVISIBLE
                           *
第 1 行出现错误:
ORA-01408: 此列列表已索引


已用时间:  00: 00: 00.06
SQL> CREATE BITMAP INDEX t1_idx3 ON t1(created_date) INVISIBLE;

索引已创建。

已用时间:  00: 00: 00.11
SQL>

但是可以使用这个语句在created_date列上来创建一个BITMAP类型的索引:

CREATE BITMAP INDEX t1_idx3 ON t1(created_date) INVISIBLE;

 Partitioned Tables

创建一个分区表t1:

SQL> DROP TABLE t1 PURGE;

表已删除。

SQL>
SQL> CREATE TABLE t1 (
  2    id            NUMBER,
  3    description   VARCHAR2(50),
  4    created_date  DATE
  5  )
  6  PARTITION BY RANGE (created_date) (
  7    PARTITION part_2014 VALUES LESS THAN (TO_DATE('01/01/2015', 'DD/MM/YYYY')) TABLESPACE users,
  8    PARTITION part_2015 VALUES LESS THAN (TO_DATE('01/01/2016', 'DD/MM/YYYY')) TABLESPACE users,
  9    PARTITION part_2016 VALUES LESS THAN (TO_DATE('01/01/2017', 'DD/MM/YYYY')) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值