Đầu tiên, một truy vấn con tương quan thực sự là một kiểu nối. Không có quy tắc vàng nào về kế hoạch thực hiện tốt nhất. Nếu bạn quan tâm đến hiệu suất, bạn cần thử các hình thức khác nhau để xem cái nào hiệu quả nhất. Hoặc, ít nhất, hãy xem xét các kế hoạch miễn trừ để đưa ra quyết định đó.
Nói chung, tôi có xu hướng tránh các truy vấn con tương quan vì một vài lý do. Đầu tiên, chúng hầu như luôn có thể được viết mà không có sự tương quan. Thứ hai, nhiều công cụ truy vấn biến chúng thành các phép nối vòng lặp lồng nhau (mặc dù sử dụng chỉ mục) và các chiến lược nối khác có thể tốt hơn. Trong những trường hợp như vậy, các truy vấn con tương quan gây khó khăn cho việc song song hóa truy vấn. Thứ ba, các truy vấn con tương quan thường gặp trong mệnh đề SELECT hoặc WHERE. Tôi muốn tất cả các bảng của mình nằm trong mệnh đề FROM.
Tuy nhiên, trong MySQL, các truy vấn con tương quan thường là nhất cách hiệu quả để thực hiện một truy vấn. Điều này đặc biệt đúng khi sử dụng truy vấn con trong IN
mệnh đề. Vì vậy, không có quy tắc vàng.