Sayangnya mysql (dan mungkin dbms apa pun) tidak dapat mengoptimalkan ekspresi seperti jobs.status != 331 and ack = 0 karena B-Tree bukanlah struktur yang memungkinkan untuk menemukan dengan cepat apa pun yang tidak-sama-dengan-nilai-konstan. Dengan demikian, Anda akan selalu mendapatkan pemindaian penuh.
Jika ada kondisi yang lebih baik seperti jobs.status = 331 and ack = 0 (perhatikan fakta bahwa saya telah mengubah != ke = ) maka akan menjadi saran untuk mempercepat kueri ini:
- bagi kueri menjadi 2, bergabung dengan
UNION ALL - ganti dalam satu kueri
LEFT JOINkeINNER JOIN(dalam salah satu yang menyiratkan bahwawq.info is not NULL)