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_JOINverze je lepší, vždy tomu rozumíte a rozumíte proč vždy bude
a poté použijte STRAIGHT_JOIN .