Day 46 · 4/5
🌿 중급 DB

데이터베이스 인덱스는 어떻게 동작하나요?

쉽게 이해하기

책 뒤에 있는 '찾아보기(색인)'와 똑같아요. 책에서 특정 단어를 찾으려면 처음부터 끝까지 읽어야 하지만, 찾아보기를 보면 '이 단어는 53페이지, 127페이지에 있다'고 바로 알려주죠. 데이터베이스 인덱스도 마찬가지로 데이터가 어디 있는지 빠르게 알려주는 지도 역할을 해요.

핵심 정리

인덱스는 데이터를 빠르게 찾기 위한 정렬된 참조 목록이에요.

자세히 알아보기

데이터베이스 인덱스는 테이블의 특정 컬럼 값을 미리 정렬해서 저장해둔 자료구조예요. 인덱스가 없으면 데이터를 찾을 때 테이블의 모든 행을 하나씩 확인해야 하는데, 인덱스가 있으면 훨씬 빠르게 원하는 데이터를 찾을 수 있어요. 대부분의 데이터베이스는 B-Tree라는 구조로 인덱스를 만들어요. B-Tree는 데이터를 트리 형태로 정렬해서 저장하기 때문에, 수백만 건의 데이터 중에서도 몇 단계만 거치면 원하는 값을 찾을 수 있어요. 예를 들어 100만 건의 데이터라도 20번 정도만 비교하면 원하는 데이터를 찾을 수 있죠. 실무에서는 자주 검색하는 컬럼에 인덱스를 만들어요. 예를 들어 사용자 테이블에서 이메일로 검색하는 경우가 많다면 이메일 컬럼에 인덱스를 만들어요. 또 WHERE 절에 자주 사용되는 컬럼, JOIN에 사용되는 컬럼, ORDER BY에 사용되는 컬럼에도 인덱스를 고려해요. 하지만 인덱스가 많다고 무조건 좋은 건 아니에요. 인덱스는 별도의 저장 공간을 차지하고, 데이터를 추가/수정/삭제할 때마다 인덱스도 함께 업데이트해야 해서 쓰기 성능이 느려질 수 있어요. 그래서 꼭 필요한 컬럼에만 인덱스를 만들고, 쿼리 성능을 모니터링하면서 최적화하는 게 중요해요.