Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 웹개발
- 프론트엔드
- 인프라
- 캐시
- JPA
- spring event
- java
- 세션
- 백엔드
- devops
- 네트워크
- Spring
- interceptor
- 인증
- DEVIEW2023
- 보안
- redis
- db
- 성능최적화
- 백엔드개발
- Spring Boot
- 웹성능최적화
- SnowFalke
- CS
- AbstractAggregateRoot
- 백엔드기초
- 백엔드개발자
- http
- 클린코드
- 데이터베이스
Archives
- Today
- Total
이것저것 개발기록
"왜 내 DB는 느릴까?" 인덱스(Index)의 기본 원리 본문
"데이터가 늘어날수록 조회가 기어가는 이유는 무엇일까요?"
풀 스캔(Full Scan)의 늪에서 성능을 건져올리는 DB Index의 원리를 아주 쉽게 설명해 드립니다.
1. 인덱스는 책의 '찾아보기'입니다
수만 페이지의 책에서 특정 단어를 찾을 때 첫 장부터 넘기지 않듯, DB도 인덱스라는 별도의 공간에 데이터를 정렬해두고 빠르게 찾아갑니다. 주로 B-Tree라는 구조를 사용하여 시간 복잡도를 $O(N)$에서 $O(\log N)$으로 줄여줍니다.
2. 인덱스 설정 시 주의사항
- 쓰기 성능 저하:
INSERT,UPDATE,DELETE가 일어날 때마다 인덱스도 재정렬해야 하므로 속도가 느려집니다. - 카디널리티: 중복도가 낮은(예: 성별보다는 주민번호나 이메일) 컬럼에 거는 것이 성능 향상에 훨씬 유리합니다.
💡 실무 노트
느린 쿼리를 발견했을 때 무작정 인덱스부터 거는 건 위험해요. 인덱스 자체가 별도의 저장 공간을 차지하기 때문에 비대해지면 오히려 독이 될 수 있습니다.
팁: 쿼리 앞에 EXPLAIN을 붙여 실행 계획을 확인해 보세요. 내가 만든 인덱스를 DB 엔진이 실제로 선택했는지, 아니면 여전히 전체 테이블을 뒤지고 있는지 확인하는 습관이 중요합니다.
'IT 이야기' 카테고리의 다른 글
| 프로세스 vs 스레드, 핵심 차이 완벽 정리 (0) | 2025.12.27 |
|---|---|
| REST API 제대로 설계하기 (멱등성 완벽 이해) (0) | 2025.12.27 |
| HTTP vs HTTPS 차이와 SSL/TLS 동작 원리 (0) | 2025.12.27 |
| 코딩은 AI가 더 잘합니다, 이제 '기초' 없는 개발자는 살아남을 수 없는 이유 (0) | 2025.12.27 |
| 서버 없이 구현하는 AI 트레이딩, MCP 아키텍처가 바꾸는 개발 패러다임 (1) | 2025.12.27 |