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

Forsøger at optimere MySQL-forespørgsel med LEFT OUTER JOIN

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:

  1. opdel forespørgslen i 2, forenet af UNION ALL
  2. erstat i én forespørgsel LEFT JOIN til INNER JOIN (i den, der antyder, at wq.info is not NULL )



  1. RYD SKÆRM - Oracle SQL Developer genvej?

  2. Tæl dage i datointerval?

  3. Generer klasse fra databasetabel

  4. Brug af Match and Against i MySQL og CodeIgniter