정의

데이터베이스에서 Index는 데이터를 빠르게 찾기 위해 사용하는 자료구조다.

인덱스는 보통 B-tree 계열 구조를 사용한다. 덕분에 검색 성능은 좋아지지만, 삽입/수정/삭제 시 추가 비용이 발생할 수 있다.

🧱 인덱스의 종류

단일 인덱스(Single Column Index)

  • 하나의 컬럼만 대상으로 만드는 인덱스다.
  • 특정 컬럼으로 자주 조회할 때 유용하다.
CREATE INDEX idx_username ON users(username);
SELECT * FROM users WHERE username = 'john_doe';

복합 인덱스(Composite Index)

  • 여러 컬럼을 함께 묶어서 만드는 인덱스다.
  • 여러 조건으로 검색할 때 유리하다.
CREATE INDEX idx_user_fullname ON users(lastname, firstname);
SELECT * FROM users WHERE lastname = 'Kim' AND firstname = 'Jisoo';

🆚 단일 인덱스와 복합 인덱스 차이

구분 단일 인덱스 복합 인덱스
정의 하나의 컬럼만 인덱싱 둘 이상의 컬럼을 함께 인덱싱
사용 상황 단일 컬럼 조회 여러 조건 조회
성능 단일 컬럼 조회에 최적 복합 조건 조회에 최적
주의사항 과도하게 많으면 비용 증가 컬럼 순서가 매우 중요

🧭 인덱스 설계 시 고려사항

  • 자주 조회되는 컬럼에 인덱스를 만든다.
  • 중복도가 높은 컬럼은 효과가 떨어질 수 있다.
  • INSERT, UPDATE, DELETE가 많은 테이블에서는 인덱스가 오히려 부담이 될 수 있다.
  • 복합 인덱스는 컬럼 순서를 신중하게 정해야 한다.

🔍 쿼리 성능 분석과 인덱스 활용

  • 자주 실행하는 쿼리의 WHERE 조건을 확인한다.
  • EXPLAIN을 사용해 인덱스가 제대로 쓰이는지 확인한다.
EXPLAIN SELECT * FROM users WHERE lastname = 'Kim';

이 결과를 보고 Full Table Scan이 발생하는지, 인덱스가 적절히 사용되는지 판단할 수 있다.

⚖️ 장점과 단점

장점

  • 데이터 조회 속도가 빨라진다.
  • 정렬, 범위 검색에 도움이 된다.

단점

  • 데이터 변경 시 성능 비용이 생긴다.
  • 저장 공간을 추가로 사용한다.

연결문서

댓글남기기