设为首页 加入收藏

TOP

Oracle 索引扫描的几种类型(一)
2019-04-01 00:08:57 】 浏览:271
Tags:Oracle 索引 扫描 类型

index range scan(索引范围扫描):


1.对于unique index来说,如果where 条件后面出现了<,> ,between ...and...的时候,那么就可能执行index range scan,如果where条件后面是=,那么就会执行index unique scan。


2.对于none unique index来说 如果where 条件后面出现了=,>,<,betweed...and...的时候,就有可能执行index range scan。


3.对于组合索引来说,如果where条件后面出现了组合索引的引导列,那么可能执行index range scan。


index fast full scan(索引快速全扫描):


如果select 语句后面中的列都被包含在组合索引中,而且where后面没有出现组合索引的引导列,并且需要检索出大部分数据,那么这个时候可能执行index fast full scan。index fast full scan 发生的条件:


1.必须是组合索引  ?。2.引导列不在where条件中


index skip scan(索引跳跃式扫描)


当查询可以通过组合索引得到结果,而且返回结果很少,并且where条件中没有包含索引引导列的时候,可能执行index skip scan


索引跳跃式扫描发生的条件:


1.必须是组合索引。


2.引导列没有出现在where条件中


-eg1


SQL> create table test as select * from dba_objects;


Table created.


SQL> create unique index ind_id on test(object_id);


Index created.


SQL> create index ind_owner on test(owner);


Index created.


SQL> create index ooo on test(owner,object_name,object_type);


Index created.


SQL> exec dbms_stats.gather_table_stats('SCOTT','TEST');


PL/SQL procedure successfully completed.


SQL> set autot trace



SQL> select owner from test where object_id=10;



Execution Plan
----------------------------------------------------------
Plan hash value: 2544773305


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


| Id  | Operation            | Name  | Rows  | Bytes | Cost (%CPU)| Time
    |


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


|  0 | SELECT STATEMENT        |        |      1 |      11 |      2  (0)| 00:0
0:01 |


|  1 |  TABLE ACCESS BY INDEX ROWID| TEST  |      1 |      11 |      2  (0)| 00:0
0:01 |


|*  2 |  INDEX UNIQUE SCAN        | IND_ID |      1 |        |      1  (0)| 00:0
0:01 |


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



Predicate Information (identified by operation id):
---------------------------------------------------


  2 - access("OBJECT_ID"=10)



Statistics
----------------------------------------------------------
      0  recursive calls
      0  db block gets
      3  consistent gets
      0  physical reads
      0  redo size
    524  bytes sent via SQL*Net to client
    524  bytes received via SQL*Net from client
      2  SQL*Net roundtrips to/from client
      0  sorts (memory)
      0  sorts (disk)
      1  rows processed


SQL> select owner from test where object_id<10;


8 rows selected.



Execution Plan
----------------------------------------------------------
Plan hash value: 1361604213


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


| Id  | Operation            | Name  | Rows  | Bytes | Cost (%CPU)| Time
    |


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


|  0 | SELEC

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle 利用执行计划来避免排序操.. 下一篇Oracle日常性能问题查看

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目