오늘은 Database의 index에 대해서 posting을 해보도록 하겠다. 보통 index라 하면 array에서 원소들이 있는 순서로 생각하는데 여기서의 index는 목차 개념이다. 헷갈릴 수 있지만 이번 posting은 index에 대해 알아도록 한다.
인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조이다. 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 돕고 있다.
[index 예시 그림]
인덱스를 활용하면, 데이터를 조회하는 SELECT 외에도 UPDATE나 DELETE의 성능이 함께 향상된다. 그러한 이유는 해당 연산을 수행하려면 해당 대상을 조회해야만 작업을 할 수 있기 때문이다.
만약 index가 없는 Table에서 검색을 할 떄는 하나하나 전체로 찾아야 하기 때문에 시간이 많이 걸린다.
DBMS는 index를 항상 최신의 정렬된 상태로 유지해야지 원하는 값을 빠르게 탐색할 수 있다. 그렇기 때문에 인덱스가 적용된 column에 INSERT, UPDATE, DELETE가 수행된다면 각각 다음과 같은 연산을 추가적으로 해주어야 하며 그에 따른 부하가 발생한다.
- Insert : 새로운 데이터에 대한 index 추가
- Delete : 삭제하는 데이터의 인덱스를 사용하지 않는다는 작업 진행
- UPDATE : 기존의 인덱스를 사용하지 않음 처리하고, 갱신된 데이터에 대해 인덱스 추가
📖 출처:
https://mangkyu.tistory.com/96 [MangKyu's Diary]
https://coding-factory.tistory.com/746
Index배열에만 있는 줄 알았는데 DB의 목차로 있는 거에 놀랐지만 사용하면 편할 것 같다는 생각을 했다. 자료구조에 대해서도 계속 공부를 해야겠다.