STRAIGHT_JOIN
vynutí pořadí spojení tabulek, takže table1
je skenován ve vnější smyčce a table2
ve vnitřní smyčce.
Optimalizátor není dokonalý (ačkoli je stále docela slušný) a nejpravděpodobnější příčinou jsou zastaralé statistiky.
Ne, pouze když je optimalizátor špatný. K tomu může dojít, pokud je vaše distribuce dat silně zkreslená nebo ji nelze správně vypočítat (řekněme pro prostorové nebo fulltextové indexy).
Měli byste sbírat statistiky, sestavovat plány pro oba způsoby a rozumět tomu, co tyto plány znamenají.
Pokud to vidíte:
-
Automaticky generovaný plán není optimální a nelze jej vylepšit standardními způsoby,
-
STRAIGHT_JOIN
verze je lepší, vždy tomu rozumíte a rozumíte proč vždy bude
a poté použijte STRAIGHT_JOIN
.