2011-06-30 44 views
23

Hôm nay tôi đã tìm hiểu về một thứ trong SQL Server được gọi là INNER LOOP JOIN.Khi nào tôi nên sử dụng INNER -LOOP- JOIN thay vì INNER JOIN

này có nghĩa là gì? (Google không hỗ trợ .. hoặc tôi nên nói ... các bài đăng trên blog về nó có một chút .. kỹ thuật và đang thổi tâm trí của tôi).

Ngoài ra, một số trường hợp phổ biến nào là tốt nhất nên sử dụng một số INNER LOOP JOIN trên tiêu chuẩn INNER JOIN?

Trả lời

21

LOOP | HASH | MERGE là Tham gia gợi ý Chỉ định rằng tham gia trong truy vấn nên sử dụng lặp, băm hoặc hợp nhất. Sử dụng LOOP | HASH | MERGE JOIN thực thi một phép nối đặc biệt giữa hai bảng. Không thể chỉ định LOOP cùng với QUYỀN hoặc ĐẦY ĐỦ làm loại tham gia

Bạn luôn nên sử dụng INNER JOIN. Hãy để trình tối ưu hóa truy vấn quyết định thời tiết nó muốn làm một LOOP, MERGE hoặc HASH tham gia. Bạn sẽ thấy rằng trong hầu hết các trường hợp, trình tối ưu hóa sẽ đưa ra phán quyết tốt hơn. Cái nào sẽ được sử dụng và khi nào có thể được tìm thấy từ bản trình bày của tôi http://sqlbits.com/Sessions/Event4/Understanding_Graphical_Execution_Plans.

+0

trích dẫn "Hãy để trình tối ưu hóa truy vấn quyết định (sic)" .. Làm thế nào là điều này (cơ bản) quyết định? Qua thống kê? –

+1

Các loại kết nối khác nhau được tối ưu hóa cho các ngữ nghĩa truy vấn khác nhau, và có, chúng chủ yếu dựa trên thống kê/cardinality, nhưng cũng có các yếu tố khác như một bên tham gia lớn hơn nhiều so với phía bên kia hay không của tôi, với những người khác ... nếu bài đăng trên blog về điều này đang thổi tâm trí của bạn, bạn tốt hơn rất nhiều để cho phép trình tối ưu hóa quyết định cho đến khi bạn nắm vững sự khác biệt giữa các loại tham gia * và * cảm thấy rằng bạn thông minh hơn trình tối ưu hóa. –

+0

@ pure.Krone. Bạn nói đúng . Mặc dù bản ngã mở rộng không được biết đến với tôi nhưng tôi biết rằng nó là một hàm Thống kê của các bảng và các chỉ mục được gạch chân, cách các nhóm tệp được tạo cho các đối tượng gạch chân, không có lõi của máy chủ (MAXDOP) và nhiều yếu tố khác. Nếu bạn muốn đào sâu, tôi khuyên bạn nên đọc Blog của Connor Cunningham là kiến ​​trúc sư chính của MS SQL Core. – Ash

8

Điều bạn đang đề cập đến là join hint. Giống như các gợi ý khác, các gợi ý tham gia chỉ nên được chỉ định làm phương sách cuối cùng vì phần lớn thời gian máy chủ SQL sẽ chọn thuật toán chính xác. Một bài viết hay để giải thích về nó là this.

Các vấn đề liên quan