riboooo
Daily Traveler 리보
riboooo
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • 프로젝트,발표 (2)
    • IT (67)
      • HTML ,CSS (3)
      • JAVA (22)
      • SQL (37)
      • 자료구조,알고리즘 (0)
      • PYTHON (4)
      • 보안 (0)
      • 서버 구축 (0)
      • GITHUB (1)
    • About ribo (2)
      • 커리어 (1)
      • 회고록 (1)
      • 버킷리스트 (0)
      • 일기 (0)
      • 잡담 (0)
    • 책 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 네이버핵데이
  • oracle
  • join
  • 시간 중복 활용
  • non-prewise
  • ORACLE CASE
  • select
  • 오라클
  • ORACLE 숫자 함수
  • inspectdb
  • 자바코딩컨벤션
  • ORACLE 조건문
  • ORACLE NULL 함수
  • ORACLE 날짜 관련 함수
  • prewise
  • django설계
  • Django
  • SQL
  • java
  • INSTALLED_APPS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
riboooo

Daily Traveler 리보

[ORACLE] 인덱스(INDEX) 구조
IT/SQL

[ORACLE] 인덱스(INDEX) 구조

2022. 1. 11. 21:46

INDEX 구조

Balance*Tree

  • node

    • root: 트리의 시작점
    • branch : leaf 노드의 위치와 저장된 값의 범위를 저장
    • leaf 데이터 저장
  • 탐색

    • root에서 leaf node까지 depth가균일한트리
    • leaf node에 저장되는 데이터를 탐색시 모든 데이터에 접근속도가 비슷
  • 정렬이 되어있기 때문에 원하는 데이터의 위치를 빠르게 접근

  • 인덱스 접근, 인덱스를 통한 테이블 접근은 모두 Single block I/O

    • DBMS에서는 한행을 읽어도 해당 행이 속한 block 전체를 조회
    • 인덱스를 통해 대량의 데이터를 Single block I/O가 발생하면 전체 읽기(Multiblock I/O) 보다 성능이 느릴 수 있다

INDEX를 활용하지 못하는경우

  • 컬럼(좌변)을 가공
  • 부정형 연산 ( !=, NOT )
  • NULL 비교
  • LIKE 연산시 와일드카드의 선행 ( LIKE '%s' )

컬럼을 가공

컬럼을 가공 → 개선

부정형 연산 (개선방안은 다른 논리적인 방법이 있는지 찾아보는것)

Null 비교

Null 비교 (index를 쓰긴했지만 Full 스캔을 함 / 효율적이지 못함)

NOT NULL 제약의 중요성

  • OPTIMIZER 입장에서는 테이블 제약조건을 보고 인덱스 사용유무를 판단하는 중요한기준
  • 값이 항상 존재하는 컬럼에 NOT NULL제약을 사용하지 않을경우
  • 인덱스를 활용하지 않는 형태의 실행계획이 작성될 수 있다*


Null 비교 → 개선

LIKE 연산시 선행 와일드 카드

반응형

'IT > SQL' 카테고리의 다른 글

[ORACLE]실행계획  (0) 2022.01.11
[ORACLE]PL/SQL  (0) 2022.01.11
[ORACLE] Window 함수, 분석함수  (0) 2022.01.11
[ORACLE]계층쿼리  (0) 2022.01.11
[ORACLE]Subquery Advanced  (0) 2022.01.11
    riboooo
    riboooo
    최준영 https://github.com/riboooo

    티스토리툴바