hash join 예제

Posted by abitou on Αυγ 02, 2019

해시 테이블을 검색하여 행이 슬롯에 있는지 여부를 확인합니다. 최적화 프로그램은 먼저 두 개 이상의 테이블을 조인하면 한 행이 포함된 행 소스가 생성되는지 여부를 결정합니다. 데이터베이스는 다음 예제인 해시 – 조인 값에 적용된 해시 함수와 같이 이전 단계에서 가져온 행 집합에서 첫 번째 행을 검색합니다. 관계형 테이블은 JSON에서 여러 가지 방법으로 나타낼 수 있으므로 이 섹션에서는 jq: 데이터베이스가 행 소스 쌍을 조인하는 두 가지 별개의 «해시 조인» 함수를 제시합니다. FROM 절에 여러 테이블이 있는 경우 최적화 프로그램은 각 쌍에 대해 가장 효율적인 조인 작업을 결정해야 합니다. 앞의 쿼리에서 조인 조건은 e.department_id=d.department_id입니다. Employees 테이블의 행에 부서 테이블의 행값과 일치하는 부서 ID가 있는 경우 데이터베이스는 조인된 결과를 반환합니다. 그렇지 않으면 데이터베이스가 결과를 반환하지 않습니다. 해시 조인에는 등가 조건자(한 테이블의 값을 같음 연산자 `=`를 사용하는 다른 테이블의 값과 비교하는 조건자)가 필요합니다. 조인 키에는 하나의 테이블만 분할됩니다. 다른 테이블은 분할될 수도 있으며 분할되지 않을 수도 있습니다.

ANSI 구문에서 OUTER JOIN 절은 외부 조인을 지정합니다. FROM 절에서 왼쪽 테이블은 OUTER JOIN 키워드의 왼쪽에 나타나고 오른쪽 테이블은 이러한 키워드의 오른쪽에 나타납니다. 왼쪽 테이블은 외부 테이블이라고도 하며 오른쪽 테이블은 내부 테이블이라고도 합니다. 예를 들어 다음 문에서 employees 테이블은 왼쪽 또는 외부 테이블입니다. 메모리에 맞는 간단한 해시 조인으로 시작합니다. 데모를 위해 두 개의 다소 큰 힙 테이블, 각각 1 000 000 행을 만듭니다. TF 7357의 도움으로 우리는 몇 가지 실행 세부 사항을 볼 수 있습니다. 이것은 Hashtbl이 키에 대해 여러 값을 저장할 수 있는 해시 테이블을 구현한다는 사실을 악용합니다. 이전 릴리스에 나타났습니다. 이러한 경우 Oracle Database는 하나의 NESTED 루프 조인 행 소스를 할당하여 조인의 바깥쪽에 있는 테이블의 값을 내부 측의 인덱스와 조인합니다. 두 번째 행 소스는 인덱스에 저장된 rowids를 포함하는 첫 번째 조인의 결과를 조인하도록 할당되고 조인의 내부 쪽에 테이블이 있습니다.

최적화 프로그램은 테이블의 고유 및 기본 KEY 제약 조건을 기반으로 이러한 상황을 인식합니다. 이러한 상황이 있는 경우 최적화 프로그램은 이러한 테이블을 조인 순서에 먼저 배치합니다.

Comments are closed.

Ο καιρός

ar8ra

advertisement