Mysql
 sql >> Database >  >> RDS >> Mysql

Cercando di ottimizzare la query MySQL con LEFT OUTER JOIN

Sfortunatamente mysql (e forse qualsiasi dbms) non può ottimizzare espressioni come jobs.status != 331 and ack = 0 perché B-Tree non è una struttura che permette di trovare velocemente tutto ciò che non è uguale a un valore costante. In questo modo otterrai sempre una scansione completa.

Se ci fossero condizioni migliori come jobs.status = 331 and ack = 0 (nota sul fatto che ho cambiato != a = ) allora sarebbe un consiglio per velocizzare questa query:

  1. dividi la query in 2, unita da UNION ALL
  2. sostituisci in una query LEFT JOIN a INNER JOIN (in quello che implica che wq.info is not NULL )