STRAIGHT_JOIN
forceert de samenvoegvolgorde van de tabellen, dus table1
wordt gescand in de buitenste lus en table2
in de binnenste lus.
De optimizer is niet perfect (hoewel nog steeds behoorlijk), en de meest waarschijnlijke oorzaak zijn de verouderde statistieken.
Nee, alleen als de optimizer fout is. Dit kan zijn als uw gegevensdistributie ernstig scheef is of niet goed kan worden berekend (bijvoorbeeld voor ruimtelijke of volledige tekstindexen).
Je moet de statistieken verzamelen, de plannen voor beide manieren maken en begrijpen wat deze plannen betekenen.
Als je dat ziet:
-
Het automatisch gegenereerde plan is niet optimaal en kan niet op de standaardmanier worden verbeterd,
-
De
STRAIGHT_JOIN
versie is beter, u begrijpt dat dit altijd zo zal zijn en begrijpt waarom het zal altijd
en gebruik vervolgens STRAIGHT_JOIN
.