`

Oracle index skip/range/full table/unique scan

 
阅读更多

 

INDEX SKIP SCAN是9i之后提供的新功能,实现了即使WHERE条件中不存在索引的前导列也可以使用索引。但是INDEX SKIP SCAN是需要下面几个条件的:

1,版本9i及以后

2,CBO(表和索引都经过分析)

3,索引的前导列重复值很少(选择性低)

4,WHERE条件中不存在索引前导列

 

 

create table test_skipscan (a varchar2(10),b number ,c varchar2(100),d date);
insert into test_skipscan select '1',dbms_random.value(1,100),object_name,SYSDATE from dba_objects where rownum<10000;
insert into test_skipscan select '2',dbms_random.value(1,100),object_name ,SYSDATE from dba_objects where rownum<10000;
insert into test_skipscan select '3',dbms_random.value(1,100),object_name ,SYSDATE from dba_objects where rownum<10000;
insert into test_skipscan select '4',dbms_random.value(1,100),object_name ,SYSDATE from dba_objects where rownum<10000;

exec DBMS_STATS.GATHER_TABLE_STATS(ownname => 'RTP06TA1',tabname => 'TEST_SKIPSCAN', cascade => TRUE,no_invalidate => FALSE);

create index i_test_skipscan_1 on test_skipscan(a,c);
select * from test_skipscan where c='/2191e31f'; -- use skip scan

create index i_test_skipscan_2 on test_skipscan(a,b,c);
select * from test_skipscan where b = '111111' AND c='/2191e31f'; -- use skip scan

create index i_test_skipscan_3 on test_skipscan(b,c);
select * from test_skipscan where c='/2191e31f'; -- use full table scan

create index i_test_skipscan_4 on test_skipscan(c);
select * from test_skipscan where c='/2191e31f'; -- use range scan
分享到:
评论

相关推荐

    index索引的8种使用模式

    如果`object_type`上有索引,那么此查询将触发INDEX RANGE SCAN,因为Oracle只需要检索索引中类型为'TABLE'的记录。 ### 5. INDEX SKIP SCAN(索引跳跃扫描) INDEX SKIP SCAN用于多列复合索引,其中查询条件仅...

    Oracle 执行计划PPT

    - **跳过扫描**(Index Skip Scan):对于包含范围条件和索引列的并集查询,跳过不匹配的索引块。 4. **快速全索引扫描**(Fast Full Index Scan):CBO模式下,对整个索引进行扫描,但不通过表。 5. **索引连接**...

    oracle索引使用样例

    5. **`INDEX SKIP SCAN`**:用于跨越多个索引分区进行搜索,特别适合于分区索引。 6. **`SCAN DESCENDING`**:按照降序顺序扫描索引。 7. **`INDEX JOIN`**:当查询涉及到多个表时,索引联接可以提高性能。 8. **`...

    Oracle 监控索引使用率脚本分享

    例如,脚本的输出显示了几个表的索引使用情况,如ACC_POS_CASH_PL_TBL_ARC表的主键索引PK_ACC_POS_CASH_PL_ARCH_TBL,执行了多次RANGE SCAN, UNIQUE SCAN, SAMPLE FAST FULL SCAN和SKIP SCAN操作。通过比较不同操作...

    ORACLE数据库SQL优化---表连接类型.docx

    优化器在连接表的同时,还要选择访问单表的最佳方式,包括全表扫描、索引扫描(Index unique scan、index range scan、index full scan、index fast full scan、index skip scan)。选择哪种方式取决于数据分布、...

    个人整理,oracle访问路径(全表扫描、回表、索引范围扫描等等)

    一、全表扫描(Full Table Scan) 全表扫描是 Oracle 访问路径的一种,最基本的访问方式。它扫描整个表,检查每一行记录,以找到匹配的记录。全表扫描通常用于以下情况: * 表非常小,扫描整个表的成本较低。 * ...

    oracleSQL优化

    - **索引跳跃式扫描(Index Skip Scan)**:在多列索引中跳过部分索引项,适用于部分列有索引,部分列无索引的情况。 - **索引全扫描(Index Full Scan)**:遍历整个索引,通常在全表扫描比索引扫描更优时发生。 ...

    oracle索引介绍

    21 INDEX(RANGESCAN) OF 'INDX_T' (NON-UNIQUE) (Cost=2 Card=20) ``` 这是因为`object_type`是组合索引的第一列,因此可以有效地利用该索引。 - 当查询条件涉及到`object_name`时: ```sql SQL&gt; SELECT * ...

    数据库 关键字一览表

    `ROLLBACK`, `ROW`, `ROWID`, `ROWNUM`, `ROWS`, `RULE`, `SAVEPOINT`, `SCAN`, `SCHEMA`, `SCN`, `SECOND`, `SECOND_MICROSECOND`, `SECURITY`, `SEGMENT`, `SELECT`, `SEQUENCE`, `SESSION`, `SESSION_CATALOG`, ...

Global site tag (gtag.js) - Google Analytics