Thật không may, mysql (và có lẽ bất kỳ dbms nào) không thể tối ưu hóa các biểu thức như jobs.status != 331 and ack = 0
bởi vì B-Tree không phải là một cấu trúc cho phép tìm nhanh bất cứ thứ gì không-bằng-với-một-giá trị-hằng-số. Vì vậy, bạn sẽ luôn nhận được toàn bộ.
Nếu có một số điều kiện tốt hơn như jobs.status = 331 and ack = 0
(lưu ý thực tế là tôi đã thay đổi !=
thành =
) thì đó sẽ là một lời khuyên để tăng tốc truy vấn này:
- tách truy vấn thành 2, được nối bởi
UNION ALL
- thay thế trong một truy vấn
LEFT JOIN
tớiINNER JOIN
(trong câu ngụ ý rằngwq.info is not NULL
)