반응형
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
DB 에서 Index 의 역할과 장단점은 어떻게 되는지 간략히 알아보았습니다.
질문 >
DB 에서 Index 의 역할과 장단점은 어떻게 되나요?
답변 >
DB에서 Index의 역할
Index(인덱스)는 데이터베이스에서 검색 성능을 향상시키기 위한 자료구조입니다. 인덱스는 책의 목차나 색인처럼 특정 열(Column)에 대한 빠른 조회를 가능하게 해줍니다. 데이터베이스 테이블에서 원하는 데이터를 더 빠르게 찾을 수 있도록 도와주며, 일반적으로 B-Tree 또는 Hash 등의 구조로 구현됩니다.
Index의 장점
- 검색 속도 향상
- WHERE 조건을 사용한 검색 시, 테이블의 모든 데이터를 스캔하는 Full Table Scan을 줄여 성능을 향상시킵니다.
- 예: SELECT * FROM users WHERE email = 'test@example.com'; → email에 인덱스가 있으면 해당 값을 빠르게 찾아낼 수 있음.
- 정렬 속도 향상 (ORDER BY, GROUP BY 최적화)
- 인덱스를 활용하면 정렬(ORDER BY)이나 그룹화(GROUP BY) 연산이 빨라질 수 있습니다.
- 예: SELECT * FROM products ORDER BY price; → price에 인덱스가 있으면 정렬이 최적화됨.
- 조인(Join) 성능 향상
- 인덱스를 사용하면 테이블 간 조인을 수행할 때 빠르게 매칭할 수 있습니다.
- 예: SELECT * FROM orders JOIN customers ON orders.customer_id = customers.id; → customer_id 또는 id 컬럼에 인덱스가 있으면 조인이 빠름.
Index의 단점
- 데이터 삽입/수정/삭제 성능 저하
- 데이터를 추가(INSERT)하거나 수정(UPDATE) 또는 삭제(DELETE)할 때, 인덱스도 함께 갱신해야 하므로 성능이 저하될 수 있습니다.
- 예: INSERT INTO users (name, email) VALUES ('John', 'john@example.com'); → email에 인덱스가 있으면 인덱스 트리도 수정해야 하므로 느려질 수 있음.
- 저장 공간 추가 사용
- 인덱스는 테이블과 별도로 저장되므로 추가적인 디스크 공간이 필요합니다.
- 특히 여러 개의 인덱스를 만들 경우, 스토리지 사용량이 급격히 증가할 수 있음.
- 잘못된 인덱스 사용 시 성능 저하
- 너무 많은 인덱스를 만들면 오히려 쿼리 최적화가 어려워지고, 실행 계획이 비효율적으로 동작할 수도 있음.
- 불필요한 인덱스는 삭제하는 것이 성능 최적화에 도움이 됨.
Index 사용 시 고려할 점
- 자주 검색하는 컬럼에만 인덱스를 생성 (WHERE, JOIN, ORDER BY 등에 자주 사용되는 컬럼)
- 적절한 인덱스 개수 유지 (너무 많으면 성능 저하, 너무 적으면 검색 속도 저하)
- 업데이트가 잦은 테이블에 불필요한 인덱스 최소화
- Composite Index(복합 인덱스) 활용 (여러 컬럼을 조합한 인덱스를 사용하여 효율적인 검색 가능)
인덱스를 잘 활용하면 데이터베이스 성능을 크게 향상시킬 수 있지만, 적절한 설계가 중요합니다! 😊
🎬 유튜브 채널 🎬
위로그@WiLog
📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌
www.youtube.com
🎬 치지직 채널 🎬
위로그 채널 - CHZZK
지금, 스트리밍이 시작됩니다. 치지직-
chzzk.naver.com
반응형
'컴퓨터' 카테고리의 다른 글
👨💻 [AWS] AWS 의 S3 서비스를 MFC 로 구현된 메신저에서 첨부파일을 업로드하고 다운로드하는 용도로 사용하면 어떻게 해야 하나요? (0) | 2025.03.24 |
---|---|
👨💻 [AWS] AWS 의 S3 서비스를 잘 이용하려면 어떻게 해야 하나요? (0) | 2025.03.24 |
👨💻 [SQLite] SQLite3 의 인덱스 필드에 NULL 을 허용하려면 어떻게 해야 하나요? (0) | 2025.03.10 |
👨💻 [AWS] s3fs-fuse 지원하는 리눅스 최소 버전은 어떻게 되나요? (0) | 2025.03.06 |
👨💻 [AWS] AWS 의 스토리지 서비스를 리눅스 서버에 저장장치로 연결해서 사용하는 방법은 어떻게 되나요? (0) | 2025.03.06 |