-
[데이터베이스] index는 무엇인가데이터베이스 2024. 8. 9. 14:37
인덱스란?
추가적인 쓰기 작업과 저장 공간을 활용하여 데이터 베이스 테이블의 검색 속도(조회)를 향상시키기 위한 자료구조이다
즉, 저장 공간에 번호를 매기는 것 과 같다고 이해 하면 된다
사용자가 특정 데이터를 찾기 위해 query 문을 입력하게 된다고 하면
테이블의 모든 데이터를 검색해야 한다 -> 시간이 오래 걸림하지만 index란 자료구조를 사용하게 된다고 하면 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회 할 수 있다
위 그림과 같이 user가 조회를 한다고 하면 index에서 해당 데이터의 위치를 찾고 table에서 가져온다
기존에는 table에서 Full Scan을 수행해야한다 하지만 index 로 인해 시간을 단축 시킬수 있다
조회(SELECT) 뿐만이 아닌 UPDATE, DELETE 의 성능도 함께 향상 된다
이유는 UPDATE, DELETE를 수행 하려고 하면 해당 데이터를 조회해야 하기 때문이다
하지만 index를 사용한다고 해서 UPDATE, DELETE가 무조건 좋은 건 아닌 것 같다
왜냐하면 DBMS는 index를 항상 최신의 정렬된 상태로 유지 해야한다 -> 원하는 값을 빠르게 탐색 할 수 있게 하기 위해
그래서 INSERT, UPDATE, DELETE가 수행이 된다면 추가적으로 연산을 해줘야 한다 -> 오버헤드 발생
- INSERT : 새로운 데이터에 대한 인덱스 추가
- DELETE : 삭제하는 데이터의 인덱스를 사용하지 않는다는 작업을 진행
- UPDATE : UPDATE 전의 인덱스를 사용하지 않는다는 작업을 처리, UPDATE 된 데이터에 대한 인덱스를 추가
장점
- 테이블을 조회하는 속도와 그에 따른 성능이 향상
- 전반적인 시스템의 부하를 줄일 수 있다
단점
- 인덱스를 관리하기 위해 10%의 저장공간이 필요
- 인덱스를 관리하기 위한 추가 작업 필요
- 인덱스를 잘 못 사용할 경우 성능이 오히려 저하되는 역효과
인덱스를 사용하면 좋은 경우
- 규모가 작지 않은 테이블
- INSERT, UPDATE, DELETE 가 자주 발생하지 않는 컬럼
- JOIN이나 WHERE, ORDER BY에 자주 사용되는 컬럼
- 데이터의 중복도가 낮은 컬럼
인덱스를 사용을 좀더 생각 해봐야 하는 경우
- CREATE, DELETE, UPDATE 같은 연산이 빈번한 테이블인 경우
- 규모가 작은 테이블
인덱스의 자료구조
인덱스를 구현하기에 가장 대표적인 자료구조는 해시 테이블과 B-Tree가 있다
'데이터베이스' 카테고리의 다른 글
성장하자! - 트랜잭션 (0) 2025.03.19 [데이터베이스] Trigger 트리거 (2) 2024.10.06 [DB] 트랜잭션의 모든 것 (0) 2024.06.28 [데이터베이스] 정규화? 비정규화? (Normalization & De-normalization) (0) 2024.05.24