-
Hash데이터베이스 with MSSQL/SQL 튜닝 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에서 행의 수가 작은 쪽을 해시테이블로 만든다.
참고로, 수행빈도가 많으면 결국 인덱스를 추가해서 관리하는게 좋다. -> 임시로 사용하는 테이블은 해시를 이용해도 된다.
'데이터베이스 with MSSQL > SQL 튜닝' 카테고리의 다른 글
Sorting (0) 2022.04.19 Merge (0) 2022.04.19 Nested Loop 조인 (0) 2022.04.18 복합 인덱스 컬럼 순서 (0) 2022.04.15 북마크 룩업 (0) 2022.04.15