sql >> Databasteknik >  >> RDS >> Mysql

Försöker optimera MySQL-frågan med LEFT OUTER JOIN

Tyvärr kan mysql (och kanske alla dbms) inte optimera uttryck som jobs.status != 331 and ack = 0 eftersom B-Tree inte är en struktur som gör det möjligt att snabbt hitta allt som inte är-lika-till-ett-konstant-värde. På så sätt får du alltid en fullskanning.

Om det fanns något bättre skick som jobs.status = 331 and ack = 0 (observera att jag har ändrat != till = ) då skulle det vara ett råd att snabba upp denna fråga:

  1. dela upp frågan i 2, sammanfogade av UNION ALL
  2. ersätt i en fråga LEFT JOIN till INNER JOIN (i den som antyder att wq.info is not NULL )



  1. Hur UNION fungerar i PostgreSQL

  2. Hur kan jag ansluta till en annan databas under programmets körning med Laravel?

  3. MySQL:Åtkomst nekad för användaren till databasen

  4. Ruby 'pg' pärla som länkar till fel kopia av libpq.5.dylib (på OSX)