Skip to content

Latest commit

 

History

History
19 lines (13 loc) · 1.29 KB

인덱스 최적화 기법.md

File metadata and controls

19 lines (13 loc) · 1.29 KB

인덱스 최적화 기법

-인덱스는 비용이다.

  • 인덱스는 두번 탐색(인덱스 리스트, 컬렉션순서)을 강요한다. 이 과정에서 읽기비용이 발생한다.
  • 컬렉션이 수정되었을 때 인덱스도 수정되어야한다. 이 때 수정 및 분산 비용이 발생한다. → INSERT, UPDATE, DELETE 등과 같은 DML 작업은 테이블과 함께 인덱스를 변경해야 하기 때문에 오히려 느려질 수 있음
  • 그렇기 때문에 무작정 인덱스를 다 설정하는것은 좋지 않음. 또한 컬렉션에서 가져와야 하는 양이 많을 수록 인덱스를 사용하는것은 비효율적이다.

-반복적인 테스팅

  • 인덱스 최적화 기법은 서비스 특징에 따라 다르다(객체의 깊이, 테이블의 양 등등)
  • explain() 함수를 이용해 인덱스를 만들고 쿼리를 보낸 이후에 테스팅을 하며 이때 걸리는 시간을 최소화 해야한다.

-복합인덱스는 같음 > 정렬 > 다중 값 > 카디널리티 순이다.

  • ==이나 equal 쿼리가 있다면 제일 먼저 인덱스로 설정
  • 정렬에 쓰는 필드면 다음 인덱스
  • 쿼리가 다중값을 출력하는 >이나 < 같은 쿼리
  • 카디널리티(특정 집합에서 유니크한 값의 개수)가 높은 순서를 기반으로 인덱스 선정