ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.