Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Tentando otimizar a consulta do MySQL com LEFT OUTER JOIN


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:
  1. divida a consulta em 2, unidas por UNION ALL
  2. substituir em uma consulta LEFT JOIN para INNER JOIN (no que implica que wq.info is not NULL )