[Index]Index Scan

本文介绍了Oracle数据库中不同类型的索引扫描,包括Index B-Tree、Index Unique Scan和Index Range Scan,并详细阐述了各种扫描方式的适用场景和性能影响。特别地,讲解了Index Unique Scan的条件及其优势,以及Index Range Scan在处理非唯一索引时的情况。最后提到了INDEX SKIP SCAN这一高级扫描方法。
摘要由CSDN通过智能技术生成

Index B-Tree

Index的叶节点指向RowID,然后根据RowID再找对应的Block


语法:CREATE INDEX NAME_SALARY_IDX ON PERSON(LAST_NAME ASC,SALARY DESC);

Index Unique Scan

对于unique index来说,如果where条件后面是=,那么就会执行index unique scan。

AskTom:well, the optimizer can look at an index that is unique and say "ah-hah, if you use "where x =:x and y = :y and ...." I'm going to get ONE row back, I can cost that much better"   (refer)

Index Unique Scan的条件:

1.Index是唯一性索引;

2.where条件类似于 x = :x and y=: y ...;

Example:

CREATE TABLE PT_TEST AS SELECT * FROM DBA_OBJECTS;

CREATE UNIQUE INDEX UNIQUE_IDX ON PT_TEST(OBJECT_ID);    --UNIQUE_IDX是唯一索引

EXEC DBMS_STATS.GATHER_TABLE_STATS('APPS','PT_TEST', CASCADE=>TRUE ); --重做统计

SQL> set auto trace

SQL> select * from pt_test where object_id=10;

Elapsed: 00:00:00.47

Execution Plan
----------------------------------------------------------
Plan hash value: 2398730171

--------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值