STRAIGHT_JOIN
tvinger sammenkædningsrækkefølgen af tabellerne, så table1
scannes i den ydre sløjfe og table2
i den indre løkke.
Optimizeren er ikke perfekt (selv om den stadig er ret anstændig), og den mest sandsynlige årsag er de forældede statistikker.
Nej, kun når optimeringsværktøjet er forkert. Dette kan være, hvis din datafordeling er alvorligt skæv eller ikke kan beregnes korrekt (f.eks. for rumlige eller fuldtekstindekser).
Du bør indsamle statistikken, bygge planerne for begge veje og forstå, hvad disse planer betyder.
Hvis du ser det:
-
Den automatisk genererede plan er ikke optimal og kan ikke forbedres på standardmåderne,
-
STRAIGHT_JOIN
version er bedre, du forstår det altid og forstår hvorfor det vil det altid
, og brug derefter STRAIGHT_JOIN
.