Является ли ОТ x JOIN y ON xa = yb эквивалентно ОТ x,y ГДЕ xa = yb?

Я заметил на некоторых тестовых данных, что запросы в форме

SELECT *
FROM a
JOIN b ON a.x = b.y
WHERE [more conditions...];

возвращали те же данные, что и запросы формы

SELECT *
FROM a,b
WHERE a.x = b.y
AND [more conditions...];

Интуитивно они кажутся эквивалентными, но я не уверен, что это так.

Я предпочитаю запрос, который использует JOIN поскольку он отделяет общую структуру запроса от конкретной бизнес-логики запроса. т.е. условия в WHERE раздел запроса с использованием JOIN те, которые могут быть параметризованы.

Какими другими способами, если таковые имеются, эти запросы не идентичны?

4 ответа

Решение

Обе формы эквивалентны, но еще одна причина, почему

SELECT *
FROM a
JOIN b ON a.x = b.y
WHERE [more conditions...];

Часто предпочтительным является то, что он предлагает большую гибкость, если вам нужно фильтровать вещи немного по-другому. Представьте себе, например, что х может быть null, Вы просто должны изменить тип соединения на left join,

Общий ответ - да.

Однако вы должны учитывать, что со сложностью ваших операторов SQL сложность их анализа и определения плана выполнения в базе данных возрастет, что повышает вероятность того, что соединения в стиле ANSI и обычные объединения не будут иметь одинаковый план выполнения., производительность и производительность.

Это, безусловно, имеет место в Oracle, в которой есть некоторые серьезные ошибки при разборе соединения ANSI (есть ошибки, ожидающие поддержки Oracle).

Эти запросы логически идентичны. Логические различия между новым JOIN форма (SQL-92) и старше , Форма в том, как работают выражения внешнего соединения.

Где они не идентичны, в качестве кода. Форма SQL-89 была заменена SQL-92 более 20 лет назад, и более новая форма намного предпочтительнее из-за ее ясности, лучшего принятия стандартов для внешних объединений и большей выразительной силы для внешних объединений.

Да, эти два способа функционируют аналогичным образом, согласно книге: Основы систем баз данных / Рамез Элмасри, Шамкант Б. Нават. Интернет-ссылка на книгу

Другие вопросы по тегам