sql >> Database teknologi >  >> RDS >> Mysql

Påvirker rækkefølgen af ​​tabeller i straight joins, uden antydningsdirektiver, ydeevnen?

Svar på dit spørgsmål - Ja, rækkefølgen af ​​bordet gør forskellen ved tilslutning.

Du kan også fortælle optimizeren om udførelsesplanen.

ORDERED-hintet får Oracle til at forbinde tabeller i den rækkefølge, som de vises i FROM-sætningen.

For eksempel forbinder denne sætning tabel TAB1 med tabel TAB2 og forbinder derefter resultatet med tabel TAB3:

 SELECT /*+ ORDERED */ TAB1.COL1, TAB2.COL2, TAB3.COL3
     FROM TAB1, TAB2, TAB3
    WHERE TAB1.COL1 = TAB2.COL1
         AND TAB2.COL1 = TAB3.COL1;

Hvis du udelader ORDERED-tip fra en SQL-sætning, der udfører en joinforbindelse, vælger optimeringsværktøjet den rækkefølge, som tabellerne skal forbindes i. Det kan være en god ide at bruge ORDERED-tip til at angive en join-rækkefølge, hvis du ved noget om antallet af rækker valgt fra hver tabel, som optimizeren ikke gør. Sådan information ville give dig mulighed for at vælge et indre og ydre bord bedre end optimeringsværktøjet kunne.

Normalt, hvis du analyserer tabellerne, vælger optimeringsværktøjet en effektiv stjerneplan. Du kan også bruge tip til at forbedre planen. Den mest præcise metode er at ordne tabellerne i FROM-sætningen i rækkefølgen af ​​nøglerne i indekset, med den store tabel sidst. Brug derefter følgende tip:

/*+ ORDERED USE_NL(FACTS) INDEX(FACTS FACT_CONCAT) */


  1. Hvordan konfigureres UTF8-tegnsæt i Oracle?

  2. Sådan installeres PgBackRest

  3. Hvordan udtrækkes kun kolonner, der ikke har nul-værdier i mysql og php?

  4. Reduktion af hukommelsesforbrug af mysql på [email protected] mikroinstans