Desværre kan mysql (og måske enhver dbms) ikke optimere udtryk som jobs.status != 331 and ack = 0
fordi B-Tree ikke er en struktur, der gør det muligt hurtigt at finde noget, der-ikke-er-lig med-en-konstant-værdi. Således får du altid en fuld scanning.
Hvis der var en bedre tilstand som jobs.status = 331 and ack = 0
(bemærk det faktum, at jeg har ændret !=
til =
), så ville det være et råd at fremskynde denne forespørgsel:
- opdel forespørgslen i 2, forenet af
UNION ALL
- erstat i én forespørgsel
LEFT JOIN
tilINNER JOIN
(i den, der antyder, atwq.info is not NULL
)