Index
정의
데이터베이스에서 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이 발생하는지, 인덱스가 적절히 사용되는지 판단할 수 있다.
⚖️ 장점과 단점
장점
- 데이터 조회 속도가 빨라진다.
- 정렬, 범위 검색에 도움이 된다.
단점
- 데이터 변경 시 성능 비용이 생긴다.
- 저장 공간을 추가로 사용한다.
댓글남기기