SQL INNER JOIN вопрос - PullRequest
       10

SQL INNER JOIN вопрос

5 голосов
/ 05 августа 2010

Я создаю запрос, который будет отображать информацию для записи, которая получена из 8 таблиц. Разработчик, который первоначально написал запрос, использовал комбинацию «где это равно этому» И «это равно этому» для создания объединений.

С тех пор я изменил запрос на использование INNER JOINS. Я задавался вопросом, был ли мой подход лучше, чем использование комбинации операторов WHERE.

По мерам хорошей практики, комбинация ВНУТРЕННИХ СОЕДИНЕНИЙ - хороший вариант, или я должен использовать другую технику.

Ответы [ 3 ]

3 голосов
/ 05 августа 2010

С точки зрения производительности, не будет никакой разницы ... по крайней мере, не на таких выдающихся СУБД, как Sql-сервер / Oracle ... Эти Database Engine способны идентифицировать оба шаблона и использовать их одинаково. план выполнения для обоих ...

По моему скромному мнению, оба являются одинаково хорошей практикой, но вы должны поддерживать согласованность и правильное выравнивание ... Где-то я слышал, что где предложение обычно используется разработчиками оракула, а внутреннее соединение - Sql-Server ... Не очень уверен в этом ... К настоящему времени большинство кодировщиков способны понимать оба типа запросов ...

1 голос
/ 05 августа 2010

Я полагаю, что нет разницы в производительности между:

Стиль ANSI
SELECT * FROM Table1 a JOIN TABLE2 b on a.id = b.id

Старый стиль
SELECT * FROM Table1 a , TABLE2 b<br> WHERE a.id = b.id

Стиль ANSI более новый, более читаемый и красивый, я предпочитаю старый стиль, особенно когда речь идет о соединении более 4/5 таблиц ... возможно, потому что я являюсь разработчиком Oracle как таковойбыло сказано раньше о_О

0 голосов
/ 05 августа 2010

Оба будут вести себя одинаково (как сказал Король).Лично я предпочитаю синтаксис INNER / OUTER / LEFT JOIN, потому что он более интуитивный / явный.Когда вы входите в ЛЕВЫЕ СОЕДИНЕНИЯ с условиями соединения в предложении WHERE, вы должны использовать знаки плюс, а затем помнить, на какую сторону их ставить.Urgghh.

Кажется также (опять же, как сказал Король), что разработчики Oracle предпочитают помещать условия соединения в предложение WHERE.

-Jamiet

...