내포된 루프 결합

Nested loop join

중첩 루프 조인은 두 개의 중첩 루프를 사용하여 두 세트를 결합하는 순진한 알고리즘이다.[1]가입 작업은 데이터베이스 관리를 위해 중요하다.

알고리즘.

두 관계가 다음과 같이 결합된다.

알고리즘 중첩_loop_join은 S do 튜플대해 R do의  튜플 r대한 이며, rs가 결합 조건을 만족하면 튜플 <r,s>를 산출한다.

이 알고리즘은 nr*bs+br 블록 전송과 nr+br 탐색을 포함하며, 여기서r b와s b는 관계 R과 S에서 각각 블록의 수이고 n은r 관계 R에서 튜플의 수이다.

알고리즘은 ( ) S I/Os로 실행되며, 서 R R S S은(는) R{\ S }에 포함된 튜플의 수입니다. 수에 관계없이 쉽게 일반화할 수 있다.

블록 중첩 루프 조인 알고리즘은[2] 메모리를 활용하여 S 관계가 스캔되는 횟수를 줄이는 단순 중첩 루프 알고리즘의 일반화다.그것은 R 관계의 큰 덩어리를 메인 메모리에 로드한다.각 청크에 대해 S를 스캔하고 현재 메모리에 있는 모든 튜플 쌍의 결합 조건을 평가한다.이렇게 하면 S가 스캔되는 횟수가 청크당 한 번으로 줄어든다.

인덱스 결합 변동

내부 관계에 조인에 사용된 속성에 대한 인덱스가 있으면 순진한 내포 루프 조인트를 인덱스 조인으로 대체할 수 있다.

알고리즘 index_join은 인덱스 조회  S tuple s대해 R do의  tuple r대한 이다. tuple <r,s>를 산출한다.

이 변동의 시간 복잡성은 O(M * N)에서 O(M * 로그 N)로 개선된다.

참고 항목

참조