Niestety mysql (i być może każdy dbms) nie może zoptymalizować wyrażeń takich jak jobs.status != 331 and ack = 0 ponieważ B-Tree nie jest strukturą, która pozwala szybko znaleźć wszystko, co nie jest równe stałej wartości. Dzięki temu zawsze uzyskasz pełny skan.
Gdyby istniały lepsze warunki, takie jak jobs.status = 331 and ack = 0 (uwaga na fakt, że zmieniłem != do = ) radziłbym przyspieszyć to zapytanie:
- podziel zapytanie na 2 połączone przez
UNION ALL - zamień w jednym zapytaniu
LEFT JOINdoINNER JOIN(w tym, który sugeruje, żewq.info is not NULL)