sql >> Databasteknik >  >> RDS >> Mysql

Varför förbättrar STRAIGHT_JOIN den här frågan så drastiskt, och vad betyder det när den skrivs efter nyckelordet SELECT?

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:

  1. Den automatiskt genererade planen är inte optimal och kan inte förbättras med standardsätten,

  2. 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 .




  1. Spara data i aktivitetens onDestroy-metod

  2. MySQL flera kolumner i IN-klausul

  3. PHP 7 RC3:Hur man installerar saknad MySQL PDO

  4. Hur man duplicerar tabell i MySQL