이해를 돕기 위해 데이터베이스의 'Customers'와 'Orders'라는 두 테이블을 가지고 Nested Loops Join(랜덤 액세스)과 Sort Merge Join(순차적 액세스)을 비교해 설명:
Customers 테이블:
| CustomerID | Name |
|------------|------|
| 1 | John |
| 2 | Jane |
| 3 | Bob |
Orders 테이블:
| OrderID | Product | CustomerID |
|---------|-----------|------------|
| 1 | Apples | 3 |
| 2 | Bananas | 1 |
| 3 | Grapes | 2 |
Nested Loops Join (랜덤 액세스 방식):
Nested Loops Join은 랜덤 접근 방식입니다. 여기서 각 Customers 테이블의 행이 Orders 테이블의 모든 행과 비교됩니다.
예를 들어, "John"이 주문한 항목을 찾을 때, 'John'은 'Orders'테이블의 각 행과 비교되어 매치되는 'Bananas'를 찾게 됩니다. 이는 랜덤 액세스로, 아무 순서 없이 곧바로 CustomerID 값이 일치하는 행에 접근합니다.
Sort Merge Join (순차적 액세스 방식):
반면, Sort Merge Join은 순차적 접근을 사용하는 조인 방식입니다. 먼저, 두 테이블이 각각 조인 열인 CustomerID를 기준으로 정렬됩니다. 조인 열 값이 일치하는지 비교하기 위해 두 테이블을 동시에 순차적으로 읽어나갑니다.
즉, 'Customers' 테이블과 'Orders' 테이블이 정렬된 상태로 각 테이블의 맨 앞 행부터 시작하여 CustomerID 값이 일치하는지 비교하고 순차적으로 다음 행으로 이동합니다. 이 과정에서 순차적 액세스가 이루어집니다.
따라서 이 두 가지 방법은 각각 랜덤 액세스와 순차적 액세스의 방법을 이용하여 데이터에 접근하고 필요한 조인 연산을 수행합니다. 사용할 방법은 데이터의 양, 인덱스 사용 유무, 메모리 용량 등 여러 요인에 따라 달라집니다.