oracle 创建反向键索引,优化器对反向键索引(REVERSE)和普通索引不同对待?

最初由 leaner 发布

[B]哦 我在查询前没有analyze table 。analyze table 后就可以用了。

还有个小问题,能不能告诉我,同样没有analyze table ,为什么普通的索引立即会被使用呢?

有 REVERSE的:

SQL> CREATE TABLE TESTTABLE

2  (

3    ID    NUMBER(10),

4    TEXT  VARCHAR2(20 BYTE)

5  );

表已创建。

SQL>

SQL> CREATE UNIQUE INDEX PK_TESTTABLE

2   ON TESTTABLE(ID)

3  TABLESPACE INDX REVERSE;

索引已创建。

SQL>

SQL> ALTER TABLE TESTTABLE

2   ADD CONSTRAINT PK_TESTTABLE

3   PRIMARY KEY (ID);

表已更改。

SQL>  insert into testtable values(1,'111111111111');

已创建 1 行。

SQL>  insert into testtable values(2,'2222222222222');

已创建 1 行。

SQL>  insert into testtable values(3,'33333333333333');

已创建 1 行。

SQL>  insert into testtable values(4,'444444444444444');

已创建 1 行。

SQL>  insert into testtable values(5,'5555555555555555');

已创建 1 行。

SQL> set autotrace on

SQL> select * from testtable where id=2;

ID TEXT

---------- --------------------

2 2222222222222

Execution Plan

----------------------------------------------------------

0      SELECT STATEMENT Optimizer=CHOOSE

1    0   TABLE ACCESS (FULL) OF 'TESTTABLE'

普通的索引:

SQL> set autotrace off;

SQL> drop table testtable;

表已丢弃。

SQL> CREATE TABLE TESTTABLE

2  (

3    ID    NUMBER(10),

4    TEXT  VARCHAR2(20 BYTE)

5  );

表已创建。

SQL>

SQL> CREATE UNIQUE INDEX PK_TESTTABLE

2   ON TESTTABLE(ID)

3  TABLESPACE INDX;

索引已创建。

SQL>

SQL> ALTER TABLE TESTTABLE

2   ADD CONSTRAINT PK_TESTTABLE

3   PRIMARY KEY (ID);

表已更改。

SQL>  insert into testtable values(1,'111111111111');

已创建 1 行。

SQL>  insert into testtable values(2,'2222222222222');

已创建 1 行。

SQL>  insert into testtable values(3,'33333333333333');

已创建 1 行。

SQL>  insert into testtable values(4,'444444444444444');

已创建 1 行。

SQL>  insert into testtable values(5,'5555555555555555');

已创建 1 行。

SQL> set autotrace on

SQL> select * from testtable where id=2;

ID TEXT

---------- --------------------

2 2222222222222

Execution Plan

----------------------------------------------------------

0      SELECT STATEMENT Optimizer=CHOOSE

1    0   TABLE ACCESS (BY INDEX ROWID) OF 'TESTTABLE'

2    1     INDEX (UNIQUE SCAN) OF 'PK_TESTTABLE' (UNIQUE) [/B]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值