Bởi vì điều này cướp đi cơ hội của trình tối ưu hóa để xem xét các phương pháp khác có thể hiệu quả hơn.
Khi phân phối dữ liệu (mà trình tối ưu hóa đưa ra quyết định) bị sai lệch nghiêm trọng và thống kê không thể đại diện chính xác.
Đây là các thuật toán khác nhau.
-
LOOP
là các vòng lặp lồng nhau:đối với mỗi bản ghi từ bảng bên ngoài, bảng bên trong được tìm kiếm các kết quả phù hợp (sử dụng chỉ mục có sẵn). Nhanh nhất khi chỉ một phần nhỏ bản ghi từ cả hai bảng thỏa mãnJOIN
vàWHERE
điều kiện. -
MERGE
sắp xếp cả hai bảng được duyệt qua chúng theo thứ tự sắp xếp, bỏ qua các bản ghi chưa được so khớp. Nhanh nhất choFULL JOIN
s và khi cả hai tập bản ghi đã được sắp xếp (từ các thao tác sắp xếp trước đó hoặc khi đường dẫn truy cập chỉ mục được sử dụng) -
HASH
xây dựng bảng băm trong bộ nhớ tạm thời (bộ nhớ hoặctempdb
) từ một trong các bảng và tìm kiếm nó cho từng bản ghi từ bảng kia. Nhanh nhất nếu phần lớn bản ghi từ một trong hai bảng khớp vớiWHERE
vàJOIN
điều kiện.