이것저것 개발기록

"왜 내 DB는 느릴까?" 인덱스(Index)의 기본 원리 본문

IT 이야기

"왜 내 DB는 느릴까?" 인덱스(Index)의 기본 원리

Garam Kim 2025. 12. 27. 11:09

"데이터가 늘어날수록 조회가 기어가는 이유는 무엇일까요?"
풀 스캔(Full Scan)의 늪에서 성능을 건져올리는 DB Index의 원리를 아주 쉽게 설명해 드립니다.

1. 인덱스는 책의 '찾아보기'입니다

수만 페이지의 책에서 특정 단어를 찾을 때 첫 장부터 넘기지 않듯, DB도 인덱스라는 별도의 공간에 데이터를 정렬해두고 빠르게 찾아갑니다. 주로 B-Tree라는 구조를 사용하여 시간 복잡도를 $O(N)$에서 $O(\log N)$으로 줄여줍니다.

2. 인덱스 설정 시 주의사항

  • 쓰기 성능 저하: INSERT, UPDATE, DELETE가 일어날 때마다 인덱스도 재정렬해야 하므로 속도가 느려집니다.
  • 카디널리티: 중복도가 낮은(예: 성별보다는 주민번호나 이메일) 컬럼에 거는 것이 성능 향상에 훨씬 유리합니다.

💡 실무 노트

느린 쿼리를 발견했을 때 무작정 인덱스부터 거는 건 위험해요. 인덱스 자체가 별도의 저장 공간을 차지하기 때문에 비대해지면 오히려 독이 될 수 있습니다.

팁: 쿼리 앞에 EXPLAIN을 붙여 실행 계획을 확인해 보세요. 내가 만든 인덱스를 DB 엔진이 실제로 선택했는지, 아니면 여전히 전체 테이블을 뒤지고 있는지 확인하는 습관이 중요합니다.