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

Klärung der Join-Reihenfolge für die Erstellung temporärer Tabellen

  1. Es bezieht sich auf die Reihenfolge, in der der Optimierer sie auswertet (Join-Warteschlange). Der Optimierer ist sich möglicherweise nicht einmal der Reihenfolge der Tabellen in Ihrer SQL-Anweisung bewusst.

  2. Nein, es widerspricht nicht dem, was in #3 geschrieben wurde, seit der Antwort explizit schreibt (Hervorhebung von mir):

Das Ergebnis und die Leistung sind zwei verschiedene Dinge. Tatsächlich gibt es einen positiv bewerteten Kommentar zu der Antwort, der besagt, dass

  1. Sie können dem Optimierer mitteilen, welche Tabelle zuerst verarbeitet werden soll, indem Sie straight_join :

Allerdings müssen Sie damit vorsichtig sein, denn Sie binden dem Optimierer die Hand. Siehe diese SO Thema zur Diskussion der Vor- und Nachteile von straight_join.

Anzahl der Datensätze, wo Kriterien, Indizes - sie alle spielen ihre Rolle bei der Entscheidung des Optimierers über die Verarbeitungsreihenfolge von Tabellen. Es gibt kein Wundermittel, Sie müssen ein bisschen herumspielen und wahrscheinlich können Sie den Optimierer dazu bringen, die Reihenfolge der Tabellen zu ändern.