Mysql
 sql >> Base de données >  >> RDS >> Mysql

Essayer d'optimiser la requête MySQL avec LEFT OUTER JOIN

Malheureusement, mysql (et peut-être n'importe quel dbms) ne peut pas optimiser des expressions comme jobs.status != 331 and ack = 0 car B-Tree n'est pas une structure qui permet de trouver rapidement tout ce qui n'est pas égal à une valeur constante. Ainsi, vous obtiendrez toujours une analyse complète.

S'il y avait une meilleure condition comme jobs.status = 331 and ack = 0 (note sur le fait que j'ai changé != à = ) alors ce serait un conseil pour accélérer cette requête :

  1. divise la requête en 2, jointes par UNION ALL
  2. remplacer en une seule requête LEFT JOIN à INNER JOIN (dans celui qui implique que wq.info is not NULL )