-
[CS/Database] 인덱스CS/데이터베이스 2024. 10. 28. 23:18
• 인덱스(Index)란 무엇인가?
추가적인 쓰기 작업과 저장 공간을 활용해서 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조
• 인덱스의 장단점?
👍장점 : 빠른 검색 성능
👎단점 :
1. 인덱스를 생성하면 추가적인 저장 공간이 필요하고 인덱스 관리를 위한 오버헤드가 발생
2. 인덱스가 존재하는 경우, 데이터 삽입 / 수정 / 삭제 시에도 인덱스가 함께 업데이트되므로 인덱스 수가 많아질 수록 쓰기 성능 저하
3. 쿼리에 사용되지 않는 인덱스가 존재하면, 시스템 리소스 공간을 불필요하게 차지하므로 시스템 전체 성능 저하
4. 인덱스로 관리하는 것도 비용이 들기 때문에, 인덱스가 많아지면 관리하기 힘들어짐
• 인덱스를 사용하면 좋은 곳과 아닌 곳?
👍사용하면 좋은 곳
1. where 절에서 자주 사용되는 컬럼
2. 외래키가 자주 사용되는 컬럼 (외래키 : 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합)
3. Join에서 자주 사용되는 컬럼
👎 아닌 곳
1. 데이터 중복도가 높은 컬럼
2. DML이 자주 일어나는 컬럼 (DML : INSERT, DELETE, UPDATE)
• 인덱스 관리 방식 (인덱스 자료구조)
DBMS가 인덱스를 어떻게 관리하고 있는지
1. B-Tree 자료구조
2. B+Tree 자료구조
3. HashTable 자료구조
• 프로젝트에서 사용해본적?
'CS > 데이터베이스' 카테고리의 다른 글
[CS/Database] JOIN (0) 2024.10.28