코다람쥐 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에서 행의 수가 작은 쪽을 해시테이블로 만든다.

 

참고로, 수행빈도가 많으면 결국 인덱스를 추가해서 관리하는게 좋다. -> 임시로 사용하는 테이블은 해시를 이용해도 된다.