Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was zuerst in mysql passiert ist:join oder where

Der join geschieht vor dem where , jedoch...

Das where -Klausel ist ein Filter für alle vom Join zurückgegebenen Zeilen, aber der Optimierer erkennt dies, wenn ein Index auf A.id vorhanden ist , wird es verwendet, um Zeilen aus A abzurufen diese Übereinstimmung, dann findet der Join statt, dann filtert die where-Klausel theoretisch die Ergebnisse, aber auch hier erkennt der Optimierer, dass die Bedingung bereits erfüllt ist, und überspringt sie als Filter.

Alles in allem gibt der Optimierer immer das gleiche Ergebnis zurück, das ohne den Optimierer zurückgegeben würde.