Antwoord op uw vraag - Ja, de volgorde van de tafel maakt verschil in join.
U kunt de optimizer ook op de hoogte stellen van het uitvoeringsplan.
De ORDERED hint zorgt ervoor dat Oracle tabellen samenvoegt in de volgorde waarin ze voorkomen in de FROM-component.
Deze instructie voegt bijvoorbeeld tabel TAB1 samen met tabel TAB2 en voegt vervolgens het resultaat toe aan tabel TAB3:
SELECT /*+ ORDERED */ TAB1.COL1, TAB2.COL2, TAB3.COL3
FROM TAB1, TAB2, TAB3
WHERE TAB1.COL1 = TAB2.COL1
AND TAB2.COL1 = TAB3.COL1;
Als u de hint ORDERED weglaat uit een SQL-instructie die een join uitvoert, kiest de optimizer de volgorde waarin de tabellen worden samengevoegd. U kunt de hint ORDERED gebruiken om een join-volgorde op te geven als u iets weet over het aantal geselecteerde rijen uit elke tabel dat de optimizer niet weet. Met dergelijke informatie kunt u een binnen- en buitentabel kiezen die beter is dan de optimizer zou kunnen.
Als u de tabellen analyseert, selecteert de optimizer meestal een efficiënt sterrenplan. U kunt ook hints gebruiken om het plan te verbeteren. De meest nauwkeurige methode is om de tabellen in de FROM-component te ordenen in de volgorde van de sleutels in de index, met de grote tabel als laatste. Gebruik dan de volgende hints:
/*+ ORDERED USE_NL(FACTS) INDEX(FACTS FACT_CONCAT) */