반응형
은세고화
뚜렷한 기억보단 흐릿한 잉크를
은세고화
전체 방문자
오늘
어제
  • 분류 전체보기 (97)
    • TDD (2)
      • 학점 산출 프로그램 (2)
    • IT (45)
      • 부스트코스 (18)
      • CS50 (3)
      • 도서추천 알고리즘 (2)
      • 스터디 일정 (3)
      • 스프링 (3)
      • 프로젝트 개발 중 발생한 에러 (8)
      • 웹개발 (5)
      • DB (3)
    • 독서 후기 (12)
      • 도서 (12)
    • e북 (3)
    • 알고리즘 (26)
    • 프로젝트 (6)
      • 향수 (6)
    • 회고 (1)

블로그 메뉴

  • 홈

공지사항

인기 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
은세고화
IT/DB

결합 인덱스란?

결합 인덱스란?
IT/DB

결합 인덱스란?

2024. 12. 24. 10:35
반응형

1. a+b+c 결합 인덱스에서 b,c만 사용하는 경우와 a,b만 사용하는 경우의 차이가 있을까?

2. and조건절은 순서대로 필터링할까?

 

1. 결합인덱스의 사용 의의와 특징


-결합인덱스란 무엇인가?

결합인덱스는 인덱스의 기준이 되는 칼럼이 2개 이상인 경우를 말한다. 토이 프로젝트만 경험한 경우, 결합인덱스의 필요성을 잘 이해하지 못할 수 있다. 예를 들어, AutoIncrement 속성을 가진 기본 키를 사용하면 충분하다고 생각할 수 있다. 하지만 실제 업무에서는 여러 칼럼을 조합하여 인덱스를 설정해야 할 필요성이 자주 발생한다.

 

 

-결합인덱스의 필요성

실제 업무 환경에서는 검색 기준이 되는 칼럼이 여러 개인 경우가 많다. 예를 들어, 고객번호, 개설일, 번호라는 세 가지 칼럼이 있고, 40개의 테이블과 3개의 데이터베이스에서 사용된다고 가정하자. (즉 모든 테이블에서 가장 중요한 검색조건이다.)

 

여러분이 담당하는 서비스가 고객번호, 개설일, 번호 세 개를 사용할 때, 고객번호가 고유하다면 고객번호로만 인덱스를 사용해도 되지만 여러분에게 주어진 상황은 일정 기간이 지나면 고객 번호를 재사용한다고 가정한다. -> 실제 우리 회사도 이런 경우가 있다.

 

이를 구분하기 위해 고객번호, 개설일, 번호를 조합하여 기본 키(Primary Key)를 설정하고 인덱스를 지정하는 것이 필요하다. 위 같은 상황일 경우 a+b+c로 검색을 한다면 당연히 인덱스를 타겠지만 b,c만 사용하는 경우와 a,b만 사용하는 경우의 차이가 있을까??

 

 

정답은 차이가 있다. a,b는 인덱스 랜덤 액세스를 하고 b,c는 인덱스를 대부분 타지 않는다.

 

-인덱스 랜덤 엑세스란?

인덱스 랜덤 액세스란 인덱스에 접근한 뒤 확인한 값으로 테이블 스캔을 진행하는 것을 말한다. 랜덤 엑세스라고 이름이 붙는 이유는 테이블에 랜덤하게 접근하기 때문이다.

 

 

좌: 인덱스(row_id) 우:  테이블 값

where절에 a+b+c 항목을 다 넣고 랜덤 엑세스를 줄여야한다. 하지만 현실적으로 조회조건이 많은 경우 랜덤엑세스는 발생할 수 밖에 없고 이를 최대한 줄이는 것이 쿼리튜닝이다.

 

2. AND 절 탐색 순서

AND절에 있는 조건들은 순서대로 필터링이 진행될까? 

where t.a = y.a
and t.b = y.b
and t.c = y.c
and t.z = y.z
and t.k in ('ab', 'ac', 'ak')
and t.g like 'test%'
;


위 쿼리의 진행 순서는 어떻게 될까?

 

질문에 대한 답변부터 하자면 순서대로 진행되지 않는다. DB의 옵티마이저가 가장 빠르게 작동할 수 있는 필터링 조건을 알아서 인식해서 빠른 것부터 수행한다.

a,b,c칼럼이 결합인덱스라면 보통 결합인덱스부터 수행하고, 그 외에 칼럼들은 DB에서 자체적으로 판단해서 수행한다.

 

다만 옵티마이저가 항상 최적의 값만 수행하지 않기 때문에 힌트를 넣거나 쿼리를 수정하는 쿼리튜닝 작업을 통해 최적으로 수행하도록 한다.

 

-참조

https://sas-study.tistory.com/448

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

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

바로 써먹는 오라클 튜닝  (0) 2025.02.12
Connection reset by peer 오류 해결기  (0) 2025.01.07
    'IT/DB' 카테고리의 다른 글
    • 바로 써먹는 오라클 튜닝
    • Connection reset by peer 오류 해결기
    은세고화
    은세고화

    티스토리툴바

    개인정보

    • 티스토리 홈
    • 포럼
    • 로그인

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.