sql >> Databáze >  >> RDS >> Oracle

Záleží na pořadí tabulek, na které se odkazuje v klauzuli ON v JOIN?

JOIN pořadí lze vynutit umístěním tabulek do správného pořadí v FROM klauzule:

  1. MySQL má speciální klauzuli nazvanou STRAIGHT_JOIN na pořadí záleží.

    To použije index na b.id :

    SELECT  a.Name, b.Status
    FROM    a
    STRAIGHT_JOIN
            b
    ON      b.ID = a.StatusID
    

    A to bude používat index na a.StatusID :

    SELECT  a.Name, b.Status
    FROM    b
    STRAIGHT_JOIN
            a
    ON      b.ID = a.StatusID
    
  2. Oracle má speciální nápovědu ORDERED k vynucení JOIN objednávka:

    To použije index na b.id nebo vytvořte hashovací tabulku na b :

    SELECT  /*+ ORDERED */
            *
    FROM    a
    JOIN    b
    ON      b.ID = a.StatusID
    

    A to bude používat index na a.StatusID nebo vytvořte hashovací tabulku na a :

    SELECT  /*+ ORDERED */
            *
    FROM    b
    JOIN    a
    ON      b.ID = a.StatusID
    
  3. SQL Server má nápovědu nazvanou FORCE ORDER udělat totéž:

    To použije index na b.id nebo vytvořte hashovací tabulku na b :

    SELECT  *
    FROM    a
    JOIN    b
    ON      b.ID = a.StatusID
    OPTION (FORCE ORDER)
    

    A to bude používat index na a.StatusID nebo vytvořte hashovací tabulku na a :

    SELECT  *
    FROM    b
    JOIN    a
    ON      b.ID = a.StatusID
    OPTION (FORCE ORDER)
    
  4. PostgreSQL lidi, omlouvám se. Váš seznam úkolů říká:

    Tipy pro Optimalizátor (nežádoucí)

    Rady pro optimalizaci se používají k řešení problémů v optimalizátoru. Raději bychom měli problémy nahlásit a opravit.

Co se týče pořadí v porovnání, to v žádném RDBMS nezáleží , AFAIK.

I když se osobně vždy snažím odhadnout, který sloupec se bude hledat, a dám tento sloupec doleva (aby vypadal jako lvalue ).

Viz tuto odpověď pro více podrobností.



  1. Úprava řádků tabulky / záznamů v SQL Server Management Studio ( SSMS) - SQL Server výukový program / TSQL výukový program, část 18

  2. Instalace Oracle Instant Client

  3. Omezte připojení k serveru SQL na konkrétní IP adresu

  4. Jak převést primární klíč z celého čísla na sériový?