(데이터베이스) 결합알고리즘의 성능(NestedLoop, Hash, SortMerge)

*NestedLoop가 효율적으로 작동하지 않는 경우의 차선책은 Hash이다.

<Hash의 특징>

  • 결합테이블로부터 해시테이블을 만들어서 활용하므로, NestedLoop에 비해 메모리를 크게 소모한다.
  • 메모리가 부족한 경우 저장소를 사용하므로 지연이 발생한다.
  • 출력되는 해시값은 입력값의 순서를 알지 못하므로, 등치 결합에만 사용할 수 있다.

<Hash가 유용한 경우>
  • NestedLoop에서 적절한 구동테이블(상대적으로 충분히 작은 테이블)이 존재하지 않는 경우 
  • 앞서 'NestedLoop의 단점에서 본것처럼 구동테이블로 사용할만한 작은 테이블은 있지만, 내부 테이블에서 히트되는 레코드 수가 너무 많은 경우
  • NestedLoops의 내부테이블에 인덱스가 존재하지 않는 경우(또는 여러가지 사정에 의해 인덱스를 추가할 수 없는) 경우

댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬