Oracle 인덱스

2024. 8. 16. 11:23·개발/ORACLE
728x90
반응형

인덱스 란

  • 데이터를 보다 빠르게 검색할 수 있도록 도와준다.
  • 아무 옵션 없이 인덱스를 생성하게 되면 B-Tree 인덱스로 생성된다.
  • 프라이머리 키나 유니크에 의해 자동으로 생성되는 인덱스(자동 인덱스)와 수동으로 만드는 인덱스가 있다.
  • 인덱스 명은 중복이 안된다. (mysql에서는 중복 name이 되었는데 오라클은 안되더라)

 

인덱스 생성 시 고려할 점

인덱스 선정 기준

  1. 큰 테이블에서 적은 양의 데이터를 조회할 때 (통상 15% 이내)
  2. where 절이나 join, order by 에서 자주 사용되는 컬럼
  3. Null 값이 많이 포함된 컬럼

 

인덱스 주의 사항

  1. 테이블의 데이터가 적거나 결과가 15%를 초과한다면 오히려 성능이 떨어짐
  2. 수정, 삭제, 생성이 많은 테이블은 생성하지 않는 게 좋음
  3. 부정형 비교 ('!=', 'NOT IN')
  4. LIKE 사용 시 앞에 %가 붙을 경우 Full Scan이 이뤄짐
  5. or 조건
  6. 너무 많은 인덱스 생성

 

인덱스 종류

B-Tree 범용적이고 범위 검색에 효과적이며 가장 일반적으로 사용됨.
Bitmap 중복된 값이 많고, 데이터 변경이 적은 경우 유리.
Hash 정확한 값 검색에 매우 빠르며, 범위 검색에는 부적합.
Clustered 데이터가 인덱스에 의해 정렬된 상태로 저장, 검색이 매우 빠름.
Non-Clustered 여러 개를 가질 수 있어 다양한 검색 조건에 유연하게 대응 가능.
Full-Text 텍스트 데이터의 전체 텍스트 검색에 유리.
Spatial 공간 데이터를 효율적으로 검색, GIS 애플리케이션에서 사용.

 

일반적인 속도 비교

Hash > B-Tree > Bitmap > Clustered > Non-Clustered > Full-Text or Spatial

 

인덱스 SCAN 종류

 

Index Unique Scan 고유한 인덱스를 사용하여 단 하나의 행을 검색.
가장 빠른 검색 방식.
기본 키 또는 고유키 검색.
Index Range Scan 인덱스에서 특정 범위의 값을 순차적으로 검색.
범위 조건 검색 (BETWEEN, <, > 등).
Index Skip Scan 다중 컬럼 인덱스에서 선행 컬럼을 건너뛰고 검색.
다중 컬럼 인덱스의 일부 컬럼만 조건으로 사용할 때.
Index Fast Full Scan 인덱스를 테이블처럼 사용해 모든 블록을 비순차적으로 읽음.
인덱스의 모든 컬럼을 읽을 때.
Index Full Scan 인덱스의 모든 엔트리를 순차적으로 읽음.
인덱스가 작고, 테이블 전체를 스캔하는 것보다 효율적일 때.
Bitmap Index Scan 비트맵 인덱스를 사용해 다수의 행을 효율적으로 검색.
데이터 중복도가 높고, 변경이 적으며 조회가 많은 경우.

 

인덱스 SCAN 속도 비교

Index Unique Scan > Index Range Scan > Index Skip Scan > Index Fast Full Scan > Index Full Scan > Bitmap Index Scan

 

인덱스만 걸면 테이블 조회에서 속도가 빨라질 줄 알았는데

무작정 걸기보단 쿼리를 바꿔보고 인덱스도 걸어보고 힌트도 사용해보고 해야겠다.

튜닝 너무 어렵다.

728x90
반응형
저작자표시 (새창열림)

'개발 > ORACLE' 카테고리의 다른 글

ORACLE - ORA-25156 ANSI 조인, (+)  (2) 2024.11.20
Oracle 힌트절  (1) 2024.11.07
Oracle Explain Plan Operation  (0) 2024.08.02
Oracle 튜닝 - 실행 계획  (0) 2024.08.02
Oracle From 절에 2개 이상의 테이블 JOIN, (+)  (0) 2024.05.22
'개발/ORACLE' 카테고리의 다른 글
  • ORACLE - ORA-25156 ANSI 조인, (+)
  • Oracle 힌트절
  • Oracle Explain Plan Operation
  • Oracle 튜닝 - 실행 계획
joolog
joolog
  • joolog
    JOO
    joolog
  • 전체
    오늘
    어제
    • 분류 전체보기 (163)
      • 개발 (81)
        • JAVA (29)
        • PYTHON (9)
        • AWS (15)
        • DOCKER (2)
        • PERCONA (2)
        • ORACLE (12)
        • MYSQL (1)
        • 알고리즘 (0)
        • 기타 (11)
      • 툴 (5)
        • MARKDOWN (1)
        • GIT (1)
        • DOCKER (1)
        • PyCharm (2)
        • IntelliJ (0)
      • 일상 (35)
        • 맛집 (6)
        • 카페 (2)
        • 요리 (4)
        • 글씨 연습 (2)
        • 그저 일상 (7)
        • 내돈 내산 (11)
        • 홍보 (1)
      • 국내 여행 (1)
      • 해외 여행 (15)
        • 체코-오스트리아 (10)
        • 일본 (5)
      • 암 일지 (26)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
    • 티스토리 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    mysql
    히로시마
    성모샘쉼터
    동위원소
    티스토리챌린지
    재발
    오블완
    jdbc
    글씨연습
    자바JDBC
    오닉스 리프3
    잘츠부르크
    오라클
    오스트리아
    요양병원
    Oracle
    체코
    저요오드식
    갑상선 암
    자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
joolog
Oracle 인덱스
상단으로

티스토리툴바