데이터 베이스 MySQL 튜토리얼 Oracle优化笔记访问索引的方法

Oracle优化笔记访问索引的方法

Jun 07, 2016 pm 04:21 PM
oracle 최적화 방법 메모 색인 입장

索引唯一性扫描(INDEX UNIQUE SCAN)(针对unique index的扫描)比索引范围扫描(INDEX UNIQUE SCAN)需要的逻辑读至少少1,这是因为索引唯一行扫描明确只有最多一行数据返回,而索引范围扫描则可能有多行数据返回,得到第一行数据之后还会向下至少再扫一个叶子节

   索引唯一性扫描(INDEX UNIQUE SCAN)(针对unique index的扫描)比索引范围扫描(INDEX UNIQUE SCAN)需要的逻辑读至少少1,这是因为索引唯一行扫描明确只有最多一行数据返回,而索引范围扫描则可能有多行数据返回,得到第一行数据之后还会向下至少再扫一个叶子节点。

  索引全扫描(INDEX FULL SCAN):索引全扫描不需要扫描该索引的所有分支块,oracle在做索引全扫描的时候只需要访问必要的分支块的定位到位于该索引最左边的叶子块的第一行索引行,通过叶子块之间的双向指针链表就可以互相访问了。因为是按照从左至右进行扫描的,,所以索引全扫描得到的数据是排好序的。索引全扫描一般都是不回表的,例如select count(*) from table; select empno from emp;能做索引全扫描的一个条件就是目标索引至少有一个索引键值列的属性是not null。

  索引快速全扫描(INDEX FAST FULL SCAN):和索引全扫描差不多,一般也是不回表的,但也有很多区别。

  和索引全扫描的区别是:

  索引快速全扫描只有在CBO中能用

  索引全扫描不能并行执行,而索引快速全扫描既可以使用多块读也可以使用并行执行。

  索引快速全扫描的结果并不一定是有序的。因为索引快速全扫描时Oracle是根据索引行在磁盘上的物理存储位置来扫描的,而不是根据索引行的逻辑顺序扫描的。

  索引跳跃式扫描(INDEX SKIP SCAN):适合所有类型的复合B树索引,(包括唯一性索引和非唯一性索引),它使得那些在where条件中没有针对目标索引的前导列指定查询条件同时又对该索引的非前导列制定了查询条件的目标SQL依然能够使用该索引。

  例如索引建在(gender,eno)两列,where条件中没有gender条件只有例如emp=100这种查询条件依然可以使用该复合B树索引。

  之所以能用是因为oracle帮我们对sql语句进行了改写,将前导列加了进来。

  原语句:

  select * from test where eno=100;

  如果此时gender列只有两个取值F和M,oracle会帮我们把它改写成

  select * form test where gender='F' and eno=100

  union all

  select * from test where gender='M' and eno=100;

  从此可以看出oracle中的索引跳跃式扫描只适用于那些目标索引前导列的distinct值数量较少,后续非前导列的可选择性又非常好的情形,因为索引跳跃式扫描的执行效率一定会随着目标索引前导列的distinct值数量的递增而递减。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Oracle 데이터베이스 로그는 얼마나 오래 보관됩니까? Oracle 데이터베이스 로그는 얼마나 오래 보관됩니까? May 10, 2024 am 03:27 AM

Oracle 데이터베이스 로그는 얼마나 오래 보관됩니까?

Oracle 데이터베이스 시작 단계의 순서는 다음과 같습니다. Oracle 데이터베이스 시작 단계의 순서는 다음과 같습니다. May 10, 2024 am 01:48 AM

Oracle 데이터베이스 시작 단계의 순서는 다음과 같습니다.

Oracle 데이터베이스 서버 하드웨어 구성 요구 사항 Oracle 데이터베이스 서버 하드웨어 구성 요구 사항 May 10, 2024 am 04:00 AM

Oracle 데이터베이스 서버 하드웨어 구성 요구 사항

Oracle에서 특정 문자의 발생 횟수를 확인하는 방법 Oracle에서 특정 문자의 발생 횟수를 확인하는 방법 May 09, 2024 pm 09:33 PM

Oracle에서 특정 문자의 발생 횟수를 확인하는 방법

오라클에는 얼마나 많은 메모리가 필요합니까? 오라클에는 얼마나 많은 메모리가 필요합니까? May 10, 2024 am 04:12 AM

오라클에는 얼마나 많은 메모리가 필요합니까?

Oracle 데이터베이스를 사용하는 데 필요한 메모리 양 Oracle 데이터베이스를 사용하는 데 필요한 메모리 양 May 10, 2024 am 03:42 AM

Oracle 데이터베이스를 사용하는 데 필요한 메모리 양

Oracle 예약 작업은 하루에 한 번 생성 단계를 실행합니다. Oracle 예약 작업은 하루에 한 번 생성 단계를 실행합니다. May 10, 2024 am 03:03 AM

Oracle 예약 작업은 하루에 한 번 생성 단계를 실행합니다.

C++ 프로그램 최적화: 시간 복잡도 감소 기술 C++ 프로그램 최적화: 시간 복잡도 감소 기술 Jun 01, 2024 am 11:19 AM

C++ 프로그램 최적화: 시간 복잡도 감소 기술

See all articles