Sự khác biệt giữa Hash, Hợp nhất và Loop tham gia?


40

Trong SQL Server, bạn có thể chỉ định các gợi ý tham gia:

  • HASH THAM GIA
  • MERGE THAM GIA
  • LOOP THAM GIA

Định nghĩa của ba gợi ý tham gia đó là gì và khi nào nên sử dụng mỗi gợi ý?

Câu trả lời:


37

Từ MSDN, trong chủ đề Khái niệm điều chỉnh truy vấn nâng cao :

SQL Server sử dụng ba loại hoạt động tham gia:

  • Các vòng lặp lồng nhau tham gia

  • Hợp nhất tham gia

  • Hash tham gia

Nếu một đầu vào nối nhỏ (dưới 10 hàng) và đầu vào nối khác khá lớn và được lập chỉ mục trên các cột nối của nó, thì một vòng lặp lồng nhau chỉ mục là thao tác nối nhanh nhất vì chúng yêu cầu ít I / O nhất và ít so sánh nhất. Để biết thêm thông tin về các vòng lặp lồng nhau, hãy xem Tìm hiểu về các vòng lặp lồng nhau.

Nếu hai đầu vào nối không nhỏ nhưng được sắp xếp trên cột nối của chúng (ví dụ: nếu chúng được lấy bằng cách quét các chỉ mục được sắp xếp), thì phép nối hợp nhất là thao tác nối nhanh nhất. Nếu cả hai đầu vào tham gia đều lớn và hai đầu vào có kích thước tương tự nhau, một kết hợp hợp nhất với sắp xếp trước và tham gia băm cung cấp hiệu suất tương tự. Tuy nhiên, hoạt động băm tham gia thường nhanh hơn nhiều nếu hai kích thước đầu vào khác nhau đáng kể. Để biết thêm thông tin, hãy xem Tìm hiểu Hợp nhất Tham gia.

Các phép nối băm có thể xử lý hiệu quả các đầu vào lớn, chưa sắp xếp, không được lập chỉ mục.

Nhưng tôi tin rằng bạn nên bắt đầu với một chủ đề cơ bản hơn: Điều chỉnh truy vấn và cuối cùng chuyển sang sử dụng các gợi ý truy vấn.


5
Đồng ý, chỉ đưa ra một gợi ý tham gia như là phương sách cuối cùng (đôi khi hữu ích nếu dữ liệu ước tính khác biệt đáng kể so với dữ liệu thực tế).
Andrew Bickerton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.