Knowledge/이론

인덱스

똑똑한망치 2024. 2. 25. 17:23
728x90
반응형

1. 인덱스 (Index)


 

인덱스란 추가적인 저장 공간을 활용하여 데이터베이스 처리 속도를 향상시키기 위한 자료구조를 의미한다.

 

인덱스를 활용하면 데이터를 조회하는 SELECT 외에도 UPDATE, DELETE 의 성능이 함께 향상된다.

왜냐하면 UPDATE, DELETE 연산은 해당 대상을 조회해야만 작업을 수행할 수 있기 때문이다.

UPDATE USER 
SET NAME = "smarthammer"
WHERE NAME = "smart"

 

만약 index 를 사용하지 않은 컬럼을 조회해야 하는 상황이라면 전체를 탐색하는 Full Scan을 수행해야 한다. 

Full Scan은 전체를 비교, 탐색하기 때문에 처리속도가 떨어진다.

 

 

(1) 인덱스를 사용하는 이유 및 장점

인덱스의 가장 큰 특징은 데이터들이 정렬되어 있다는 점이다. 이 특징으로 인해 조건 검색이라는 영역에서 굉장한 장점이다.

  • 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있다.
  • 전반적인 시스템의 부하를 줄일 수 있다.

 

 

(2) 인덱스의 단점

  • 인덱스를 관리하기 위한 추가적인 저장공간과 추가 작업이 필요하다.
  • 인덱스를 잘못 사용할 경우 오히려 성능이 저하되는 역효과가 발생할 수 있다.

 

(2) 인덱스의 관리

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

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

 

만약 CREATE, DELETE, UPDATE 가 빈번하게 속성에 인덱스를 걸게 되면 인덱스의 크기가 커져 오히려 성능이 저하되는 역효과가 발생할 수 있다. DELETE와 UPDATE는 기존의 인덱스를 삭제하지 않고 '사용하지 않음'처리를 하기 때문이다.

반응형

'Knowledge > 이론' 카테고리의 다른 글

SQL 명령어  (0) 2024.03.04
MVC 패턴  (1) 2024.02.27
RESTful API  (0) 2024.02.25
브라우저의 렌더링 과정  (0) 2024.02.20
URI 와 URL 차이  (0) 2024.02.20