Oracle 虚拟索引(Virtual index)

Oracle的虚拟索引允许在不创建真实索引的情况下来测试添加索引对查询是否有帮助,测试如下:

 

1先看初始执行计划

 

SQL> EXPLAIN PLAN FOR SELECT * FROM BI.ODS_PMSETTLE WHERE ID=1300;

已解释。

SQL> SET LINESIZE 130
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(null,null,'BASIC +COST'));
Plan hash value: 4246244671

-------------------------------------------------------
| Id  | Operation         | Name         | Cost (%CPU)|
-------------------------------------------------------
|   0 | SELECT STATEMENT  |              |    11   (0)|
|   1 |  TABLE ACCESS FULL| ODS_PMSETTLE |    11   (0)|
-------------------------------------------------------

已选择8行。

 

2允许session使用虚拟索引,默认false


SQL> alter session set "_use_nosegment_indexes"=true;

会话已更改。

 

3添加虚拟索引,使用nosegment选项


SQL> create index v_idx_pmsettle_id on bi.ods_pmsettle(id) nosegment;

索引已创建。

 

4再次运行执行计划

SQL> EXPLAIN PLAN FOR SELECT * FROM BI.ODS_PMSETTLE WHERE ID=1300;

已解释。

SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(null,null,'BASIC +COST'));
Plan hash value: 134430619

----------------------------------------------------------------------
| Id  | Operation                   | Name              | Cost (%CPU)|
----------------------------------------------------------------------
|   0 | SELECT STATEMENT            |                   |     2   (0)|
|   1 |  TABLE ACCESS BY INDEX ROWID| ODS_PMSETTLE      |     2   (0)|
|   2 |   INDEX RANGE SCAN          | V_IDX_PMSETTLE_ID |     1   (0)|
----------------------------------------------------------------------

已选择9行。

SQL>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值