Dưới đây là một câu lệnh SQL bên trong một thủ tục lưu trữ (cắt ngắn cho ngắn gọn):MySQL Ở ĐÂU KHÔNG TRONG cực kỳ chậm
SELECT *
FROM item a
WHERE a.orderId NOT IN (SELECT orderId FROM table_excluded_item);
Tuyên bố này mất 30 giây hoặc lâu hơn! Nhưng nếu tôi xóa truy vấn SELECT bên trong, nó sẽ giảm xuống 1s. table_excluded_item
không phải là rất lớn, nhưng tôi nghi ngờ các truy vấn bên trong đang được thực hiện nhiều hơn nó cần phải được.
Có cách nào hiệu quả hơn để thực hiện việc này không?
Truy vấn bên trong là truy vấn con phụ thuộc, vốn là nút cổ chai khét tiếng vì truy vấn con chạy trên mỗi hàng truy vấn bên ngoài. Kiểm tra [Tối ưu hóa truy vấn con] (http://dev.mysql.com/doc/refman/5.1/en/optimizing-subqueries.html) trên trang web dev của MySQL. – Anthony