CS/데이터베이스

인덱스의 정의 및 장단점

프론트엔드코린이 2025. 6. 16. 10:07

[인덱스(index)란]

데이터베이스 검색 속도를 높이는데 사용되는 자료구조 이다.

인덱스(index)는 책 뒤에 있는 색인 같은 것이다.

찾아야 할 내용이 있을 때 색인을 보고 해당 페이지로 가서 원하는 정보를 얻을 수 있다.

만약 색인이 없다면 책 첫 페이지부터 마지막 페이지까지 모두 넘겨봐야 한다.

 

예시 테이블

[인덱스 설정에 따른 실행 계획]

인덱스가 설정 되어 있지 않는 경우

인덱스가 없는 상태에서 데이터를 조회하게 되면 Full Table Scan을 하게 된다.

 

인덱스가 설정 되어 있는 경우

 

 

[인덱스의 관리]

인덱스는 항상 최신의 정렬 상태를 유지해야 원하는 값을 빠르게 탐색 할 수 있다.

따라서 인덱스가 적용된 컬럼에 변경 작업이 있다면 연산을 추가적으로 해주어야 하므로 이에 따른 오버해드가 발생한다.

  • INSERT : 새로운 데이터에 대한 인덱스를 추가한다.
  • DELETE : 삭제하는 데이터의 인덱스를 사용하지 않는다는 작업을 진행한다.
  • UPDATE : 기존의 인덱스를 사용하지 않음 처리하고, 갱신된 데이터에 대해 인덱스를 추가함

 

[인덱스의 문제점]

만약 MySQL관련 책의 찾아보기에 MySQL이라는 단어가 등록되어 있다고 한다면 MySQL 단어가 사용된 모든 페이지가 색인에 적혀있을 것이다.

만약 찾아보기에 실린 단어가 모두 이런식이라면 찾아보기의 분량이 엄청 많아질 것이다.

찾아보기에 있는 페이지를 하나하나 보면서 MySQL 단어가 들어간 페이지를 찾는 것보다 앞에서부터 읽어나가는 것이 더욱 효율적일 수 있다.

실제 데이터베이스에도 필요 이상의 인덱스를 생성하게 되면 데이터베이스에서 차지하는 공간만 늘어나고 인덱스를 이용해서 데이터를 찾는 것이 전체 테이블을 찾아보는 것보다 훨씬 느릴 수 있다.

 

[인덱스의 장점과 단점]

장점

  • 조회 속도를 향상할 수 있다.
  • 검색에 대한 쿼리 부하를 줄여 성능을 향상 시킬수 있다.

단점

  • 인덱스를 저장할 공간이 필요하며 Dat

'CS > 데이터베이스' 카테고리의 다른 글

트랜잭션이란?  (1) 2025.06.16
정규화란?  (1) 2025.06.16