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 JOIN
keINNER JOIN
(dalam salah satu yang menyiratkan bahwawq.info is not NULL
)