database - 이란 - 조인 정렬



중첩 된 조인 대 병합 조인 대 PSQL의 해시 조인 (1)

다음은 몇 가지 경험 법칙입니다.

  • 중첩 루프 조인조인 의 측면 중 하나에 행이 거의없는 경우 선호됩니다. 조인 조건에서 항등 연산자를 사용하지 않는 경우 중첩 루프 조인도 유일한 옵션으로 사용됩니다.

  • 해시 조인 은 조인 조건이 같음 연산자를 사용하고 조인의 양면이 크고 해시가 work_mem 맞을 때 work_mem 됩니다.

  • 병합 조인 은 조인 조건이 항등 연산자를 사용하고 조인의 양 측면이 크지 만 조인 조건에 효율적으로 정렬 될 수있는 경우 (예 : 조인 열에 인덱스가있는 경우) 선호됩니다.

한 테이블에서 한 행만 선택하고 다른 테이블에서 연관된 행을 선택하는 일반적인 OLTP 쿼리는 항상 유일한 효율적인 방법으로 중첩 루프 조인을 사용합니다.

조인 전에 필터링 할 수없는 여러 행의 테이블을 조인하는 쿼리는 중첩 된 루프 조인에서는 매우 비효율적이며 조인 조건에서 허용하는 경우 항상 해시 또는 병합 조인을 사용합니다.

옵티마이 저는 이러한 각 조인 전략을 고려하여 최저 비용을 약속하는 전략을 사용합니다. 이 결정의 기반이되는 가장 중요한 요소는 조인의 양쪽에서 예상되는 행 수입니다. 결과적으로 잘못된 옵티 마이저 선택은 대개 행 수의 오판으로 인해 발생합니다.

나는 어떻게 알았어.

  1. 중첩 된 조인
  2. 병합 병합
  3. 해시 조인

작품과 그 기능.

나는 Postgres에서 이러한 조인이 어떤 상황에서 사용되는지 알고 싶었습니다.





sql-execution-plan