STRAIGHT_JOIN
tvingar samman tabellerna, så table1
skannas i den yttre slingan och table2
i den inre slingan.
Optimeraren är inte perfekt (även om den fortfarande är ganska anständig), och den mest troliga orsaken är den föråldrade statistiken.
Nej, bara när optimeraren är fel. Detta kan vara om din datadistribution är kraftigt skev eller inte kan beräknas korrekt (t.ex. för rumsliga eller fulltextindex).
Du bör samla in statistiken, bygga upp planerna för båda hållen och förstå vad dessa planer betyder.
Om du ser det:
-
Den automatiskt genererade planen är inte optimal och kan inte förbättras med standardsätten,
-
STRAIGHT_JOIN
versionen är bättre, du förstår att den alltid kommer att göra det och förstår varför det kommer alltid att göra det
, använd sedan STRAIGHT_JOIN
.