STRAIGHT_JOIN
erzwingt die Join-Reihenfolge der Tabellen, also table1
wird in der äußeren Schleife gescannt und table2
in der inneren Schleife.
Der Optimierer ist nicht perfekt (aber immer noch ziemlich anständig), und die wahrscheinlichste Ursache sind die veralteten Statistiken.
Nein, nur wenn der Optimierer falsch liegt. Dies kann der Fall sein, wenn Ihre Datenverteilung stark verzerrt ist oder nicht richtig berechnet werden kann (z. B. für räumliche oder Volltextindizes).
Sie sollten die Statistiken sammeln, die Pläne für beide Wege erstellen und verstehen, was diese Pläne bedeuten.
Wenn Sie das sehen:
-
Der automatisch generierte Plan ist nicht optimal und kann nicht mit den Standardmethoden verbessert werden,
-
Der
STRAIGHT_JOIN
Version ist besser, du verstehst es immer und verstehst warum es wird immer
, dann verwenden Sie STRAIGHT_JOIN
.