sql >> Base de Datos >  >> RDS >> Mysql

Intentando optimizar la consulta MySQL con LEFT OUTER JOIN

Desafortunadamente, mysql (y quizás cualquier dbms) no puede optimizar expresiones como jobs.status != 331 and ack = 0 porque B-Tree no es una estructura que permita encontrar rápidamente cualquier cosa que no sea igual a un valor constante. Por lo tanto, siempre obtendrá un escaneo completo.

Si hubiera alguna condición mejor como jobs.status = 331 and ack = 0 (nota sobre el hecho de que he cambiado != a = ) entonces sería un consejo acelerar esta consulta:

  1. divida la consulta en 2, unidas por UNION ALL
  2. reemplazar en una consulta LEFT JOIN a INNER JOIN (en el que implica que wq.info is not NULL )