221227 인덱스, Index

Jongleee·2022년 12월 27일
0

TIL

목록 보기
140/576

인덱스, Index

추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위해 데이터와 데이터의 위치를 포함한 자료구조를 생성한 것

인덱스(index)의 관리

  • DBMS는 index를 항상 최신의 정렬된 상태로 유지해야 원하는 값을 빠르게 탐색할 수 있음
  • 인덱스가 적용된 컬럼에 INSERT, UPDATE, DELETE가 수행된다면 추가적인 연산과 그에 따른 오버헤드가 발생

INSERT: 새로운 데이터에 대한 인덱스를 추가
DELETE: 삭제하는 데이터의 인덱스를 사용하지 않도록 처리
UPDATE: 기존의 인덱스를 사용하지 않음 처리하고, 갱신된 데이터에 대해 인덱스를 추가

인덱스의 장점

  1. SELECT, UPDATE나 DELETE의 성능 향상
  • 해당 연산을 수행하려면 해당 대상을 조회해야만 작업을 할 수 있기 때문
  • index를 사용하지 않은 경우 Full Scan을 수행하여 전체를 탐색하기 때문에 처리 속도가 떨어짐
  1. 전반적인 시스템의 부하를 줄일 수 있음

인덱스의 단점

  1. 저장공간
    DB의 약 10%에 해당하는 저장공간이 필요
  2. 추가작업 필요
    인덱스 관리
  3. 인덱스를 잘못 사용할 경우 오히려 성능이 저하되는 역효과가 발생할 수 있음
  • CREATE, DELETE, UPDATE가 빈번한 속성에 인덱스를 걸게 되면 인덱스의 크기가 비대해져서 성능이 오히려 저하되는 역효과가 발생할 수 있음
  • UPDATE와 DELETE는 기존의 인덱스를 삭제하지 않고 '사용하지 않음' 처리하므로 UPDATE와 DELETE가 빈번하게 발생된다면 SQL문 처리 시 인덱스가 실제 데이터보다 더 많게 될 수 있음

인덱스(index)를 사용하면 좋은 경우

  1. 규모가 작지 않은 테이블
  2. INSERT, UPDATE, DELETE가 자주 발생하지 않는 컬럼
  3. JOIN이나 WHERE 또는 ORDER BY에 자주 사용되는 컬럼
  4. 데이터의 중복도가 낮은 컬럼

0개의 댓글