Bohužel mysql (a možná jakékoli dbms) neumí optimalizovat výrazy jako jobs.status != 331 and ack = 0
protože B-Strom není struktura, která umožňuje rychle najít cokoliv, co se-nerovná-konstantní-hodnotě. Vždy tak získáte úplné naskenování.
Pokud by existovala nějaká lepší podmínka jako jobs.status = 331 and ack = 0
(Poznámka ke skutečnosti, že jsem změnil !=
na =
), pak by bylo vhodné tento dotaz urychlit:
- rozdělte dotaz na 2, spojené pomocí
UNION ALL
- v jednom dotazu nahraďte
LEFT JOIN
doINNER JOIN
(v tom, který znamená, žewq.info is not NULL
)