14

В чем разница между JOIN и INNER JOIN?

13

У меня есть вопрос по поводу двух SQL-запросов, которые дают одинаковые результаты:

SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK

в сравнении с

SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK

Есть ли какая-то разница между этими запросами с точки зрения производительности или других аспектов? Может быть, это различие проявляется в разных реализациях SQL?

3 ответ(ов)

16

Они функционально эквивалентны, но INNER JOIN может быть немного проще для восприятия, особенно если в запросе имеются и другие типы соединений (например, LEFT, RIGHT или CROSS).

2

INNER JOIN = JOIN

  • INNER JOIN является умолчательным вариантом, если вы не указываете тип при использовании слова JOIN.

Вы также можете использовать LEFT OUTER JOIN или RIGHT OUTER JOIN, в этом случае слово OUTER является необязательным, или можно указать CROSS JOIN.

ИЛИ

  • Синтаксис для INNER JOIN:

    SELECT ...
    FROM TableA
    [INNER] JOIN TableB
    

    (Другими словами, ключевое слово INNER является необязательным — результаты будут одинаковыми как с ним, так и без него.)

0

Да, действительно, в случае с OUTER JOINs слово "OUTER" является необязательным. Именно ключевые слова LEFT или RIGHT определяют, станет ли JOIN "OUTER" JOIN.

Лично я всегда использую "OUTER", например, LEFT OUTER JOIN, а не просто LEFT JOIN. В то же время я никогда не пишу INNER JOIN, предпочитая использовать просто "JOIN":

SELECT ColA, ColB, ...
FROM MyTable AS T1
     JOIN MyOtherTable AS T2
         ON T2.ID = T1.ID
     LEFT OUTER JOIN MyOptionalTable AS T3
         ON T3.ID = T1.ID

Такое предпочтение использования "OUTER" и'JOIN' может быть связано с желанием быть более ясным в выражении типа соединения, что может помочь в дальнейшем чтении и сопровождении кода.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь