코다람쥐
2022. 4. 19. 20:19
1. 특징
- 인덱스가 없을 때 위력을 발휘한다.
- 정렬이 필요없다.
- 해시테이블은 메모리 소모가 크다.(대신 성능이 좋아진다)
2. 확인
USE Northwind;
SELECT * INTO TestOrders FROM Orders;
SELECT * INTO TestCustomers FROM Customers;
SELECT * FROM TestOrders -- ROW 830
SELECT * FROM TestCustomers -- ROW 91
-- 해시조인은 데이터 수에 영향을 받기 때문에 행의 개수를 표시해놓고 확인해보기.
SELECT *
FROM TestOrders AS o
INNER JOIN TestCustomers AS c
ON o.CustomerID = c.CustomerID;

결과는 해시조인을 사용한다.
내부로직으로는 일시적인 HashTable을 만들고, 이 HashTable을 이용해서 CustomerID가 일치하는지 아닌지를 비교한다.
보통 DB에서 행의 수가 작은 쪽을 해시테이블로 만든다.
참고로, 수행빈도가 많으면 결국 인덱스를 추가해서 관리하는게 좋다. -> 임시로 사용하는 테이블은 해시를 이용해도 된다.