[DB] 인덱싱이란?

hahaha·2021년 10월 23일

DB

목록 보기
1/3

인덱스(index, 색인)

  • 데이터를 쉽고 빠르게 찾을 수 있도록하는 자료 구조
  • 빠른 검색, 효율적인 레코드 접근 가능 (WHERE 절에 인덱스 컬럼을 사용할 때)
  • key-value(실제 값이 아닌 주소 값)로 이루어져 있으며 B-tree 형태의 구조
  • 하나 혹은 여러 개의 컬럼에 대해 설정 가능
  • 인덱스를 많이 설정한다고 해서 검색 속도가 향상되는 것은 아님
  • DB 메모리를 사용하므로, 조회 시 자주 사용되고 고유한 값 위주로 설정하는 것이 좋음

인덱스 설정 기준

기준정도
카디널리티(전체 튜플의 개수)높을수록 적합
선택도낮을 수록 적합
활용도높을 수록 적합
중복도낮을수록 적합

생성하기

create index [인덱스 이름] on [테이블 이름] (칼럼명1, ...);

확인하기

show index from [테이블 이름];

삭제하기

drop index [인덱스 이름] on [테이블 이름];

추가 개념들

종류

1) 클러스터 인덱스

  • 기본키 지정 시, 기본키에 대한 클러스터 인덱스 생성
  • 기본키 미지정 시, 먼저 나오는 unique 속성 이용
  • 기본키, unique 속성 X, MySQL의 자체 행번호 이용

2) 보조 인덱스

  • 클러스터가 아닌 모든 인덱스
  • 각 레코드는 보조 인덱스 속성과 기본키 속성값 지님
  • 기본키 속성값을 찾은 후, 클러스터 인덱스에서 해당 레코드 찾음

인덱스 타는지 확인하는 방법

explain [쿼리문];
  • type: ALL -> 인덱스 안 탐
  • type: range, index -> 인덱스 탐
profile
junior backend-developer 👶💻

0개의 댓글