Infelizmente o mysql (e talvez qualquer dbms) não pode otimizar expressões como
jobs.status != 331 and ack = 0
porque B-Tree não é uma estrutura que permite encontrar rapidamente qualquer coisa que não seja igual a um valor constante. Assim, você sempre obterá uma varredura completa. Se houvesse alguma condição melhor como
jobs.status = 331 and ack = 0
(observe o fato de que eu mudei !=
para =
) então seria um conselho para acelerar essa consulta:- divida a consulta em 2, unidas por
UNION ALL
- substituir em uma consulta
LEFT JOIN
paraINNER JOIN
(no que implica quewq.info is not NULL
)