Union sẽ nhanh hơn, vì nó chỉ cần chuyển câu lệnh SELECT đầu tiên, sau đó phân tích cú pháp câu lệnh SELECT thứ hai và thêm kết quả vào cuối bảng đầu ra.
Tham gia sẽ đi qua từng hàng của cả hai bảng, việc tìm kiếm các kết quả phù hợp trong bảng khác do đó cần xử lý nhiều hơn do tìm kiếm các hàng phù hợp cho mỗi và mọi hàng.
CHỈNH SỬA
Bởi Union, ý tôi là Union All vì nó có vẻ phù hợp với những gì bạn đang cố gắng đạt được. Mặc dù một Liên minh bình thường thường nhanh hơn sau đó Tham gia.
EDIT 2 (Trả lời bình luận của @seebiscuit)
Tôi không đồng ý với anh ta. Về mặt kỹ thuật mà nói, cho dù phép nối của bạn có tốt đến đâu, thì "JOIN" vẫn đắt hơn một phép nối thuần túy. Tôi đã tạo một bài đăng trên blog để chứng minh điều đó tại blog của tôi codePERF [dot] net . Thực tế mà nói, chúng phục vụ 2 mục đích hoàn toàn khác nhau và điều quan trọng hơn là đảm bảo việc lập chỉ mục của bạn là đúng và sử dụng đúng công cụ cho công việc.
Về mặt kỹ thuật, tôi nghĩ rằng nó có thể được tóm tắt bằng cách sử dụng 2 kế hoạch thực hiện sau đây được lấy từ bài đăng trên blog của tôi:
UNION ALL
Kế hoạch thực hiện
JOIN
Kế hoạch thực hiện
Kết quả thực tế
Thực tế mà nói, sự khác biệt trong tra cứu chỉ mục theo nhóm là không đáng kể: