Oracle
 sql >> база данни >  >> RDS >> Oracle

Има ли значение редът на таблиците, посочен в клаузата ON на JOIN?

JOIN редът може да бъде принуден чрез поставяне на таблиците в правилния ред в FROM клауза:

  1. MySQL има специална клауза, наречена STRAIGHT_JOIN което прави поръчката важна.

    Това ще използва индекс на b.id :

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

    И това ще използва индекс на a.StatusID :

    SELECT  a.Name, b.Status
    FROM    b
    STRAIGHT_JOIN
            a
    ON      b.ID = a.StatusID
    
  2. Oracle има специален намек ORDERED за да наложите JOIN поръчка:

    Това ще използва индекс на b.id или изградете хеш таблица на b :

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

    И това ще използва индекс на a.StatusID или изградете хеш таблица на a :

    SELECT  /*+ ORDERED */
            *
    FROM    b
    JOIN    a
    ON      b.ID = a.StatusID
    
  3. SQL Server има намек, наречен FORCE ORDER за да направите същото:

    Това ще използва индекс на b.id или изградете хеш таблица на b :

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

    И това ще използва индекс на a.StatusID или изградете хеш таблица на a :

    SELECT  *
    FROM    b
    JOIN    a
    ON      b.ID = a.StatusID
    OPTION (FORCE ORDER)
    
  4. PostgreSQL момчета, съжалявам. Вашият списък със задачи казва:

    Съвети за оптимизатор (не са желани)

    Подсказките на оптимизатора се използват за заобикаляне на проблеми в оптимизатора. Предпочитаме проблемите да бъдат докладвани и отстранени.

Що се отнася до реда в сравнението, той няма значение във всеки RDBMS , AFAIK.

Въпреки че аз лично винаги се опитвам да преценя коя колона ще бъде търсена и поставям тази колона вляво (за да изглежда като lvalue ).

Вижте този отговор за повече подробности.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявка за данни от XML

  2. Присъединете се към форума за въпроси и отговори за разработчици

  3. какво представлява материализираните възгледи в Oracle?

  4. Как да изберете колони от таблица, които имат стойности, различни от null?

  5. Топ-N заявки и пагинация в Oracle