ABOUT ME

Today
Yesterday
Total
  • 인덱스
    카테고리 없음 2025. 3. 20. 01:29
    2주차 Database Study

     

    인덱스

    • 테이블 내에서 검색속도를 향상시키는 자료구조
    • 특정 컬럼에 대한 검색, 정렬 속도를 빠르게 수행
    • 특정 값이나 범위 검색시 유용 WHERE, BETWEEN, ORDER BY, JOIN할때도 유용

     

    B-Tree 인덱스, Hash 인덱스

    • B-Tree를 통해 데이터를 정렬하여 저장 → 정렬과 범위 검색에 유용  : O(logN)
    • 데이터를 해시값으로 저장 → 정확히 일치하는 값을 찾는데 최적 : O(1)

     

    인덱스를 사용할 때 장/단점

    검색속도 향상

    앞서 말한대로 특정 값이나 범위 검색시 유용하다는 장점

     

    저장공간 필요

    INT 4byte, VARCHAR는 데이터의 크기만큼 차지한다고함

     

    인덱스 갱신

    쓰기 작업(INSERT/UPDATE/DELETE) 수행시, 인덱스를 재구성하는 인덱스 갱신이 일어남

    때문에 쓰기 작업 + 인덱스 갱신을 통해서 쓰기 성능이 낮아질 수 있음

     

    인덱스 스캔 방법

    • Full Scan : 테이블 전체 조회
    • Index Full Scan : 인덱스 테이블 전체 조회 
    • Index Range Scan : 인덱스 테이블 범위 조회  ex) BETWEEN
    • Index Unique Scan : 인덱스 테이블 특정 값으로 조회 ex) WHERE 
    • Index Loose Scan : 부분적인 값을 기준으로 조회 ex) LIKE
    • Index Merge Scan : 두 개 이상의 인덱스를 합성 ex) WHERE A AND B

     

    복합 인덱스(Composite Index)

    • 두개이상의 컬럼을 결합하여 만든 인덱스
    • 여러 개의 컬럼으로 조회해야하는 경우가 많을 때 유용
    SELECT * 
    FROM STUDENT
    WHERE STU_ID = 1
    AND GRADE_CD = 10001

     

    위와 같이 여러 개의 컬럼 쌍으로 조회하는 케이스가 많다면 복합 인덱스를 고려할 수 있음

     

     

    인덱스 설계 시 고려해야 할 핵심 요소

    인덱스 키로 쿼리하는 빈도가 많은 것 ex) 학생의 학년 컬럼으로 자주 쿼리하는 경우

    카디널리티가 높은 컬럼 → 카디널리티가 높다는 건 고르게 분포되어있다는 뜻

Designed by Tistory.