내포된 루프 결합
Nested loop join이 글은 검증을 위해 인용구가 추가로 필요하다.– · · ·· (2021년 1월)(이 |
중첩 루프 조인은 두 개의 중첩 루프를 사용하여 두 세트를 결합하는 순진한 알고리즘이다.[1]가입 작업은 데이터베이스 관리를 위해 중요하다.
알고리즘.
및 두 관계가 다음과 같이 결합된다.
알고리즘 중첩_loop_join은 S do의 각 튜플에 대해 R do의 각 튜플 r에 대한 것이며, r과 s가 결합 조건을 만족하면 튜플 <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)로 개선된다.
참고 항목
참조