Подтвердить что ты не робот

MySQL - левые соединения официально предпочтительны по сравнению с правильными объединениями?

В документации MySQL для объединений сотрудник сегодня указал на этот драгоценный камень:

RIGHT JOIN работает аналогично LEFT JOIN. Чтобы переносить код переносимым по базам данных, рекомендуется использовать LEFT JOIN вместо RIGHT JOIN.

Кто-нибудь может пролить свет на это? Это кажется мне вероятным прошлым возрастом - так как, возможно, документация означает сказать: "Чтобы поддерживать обратный код обратно с более ранними версиями MySQL..."

Есть ли современная РСУБД, которая не поддерживает RIGHT JOIN? Я получаю, что RIGHT JOIN является синтаксическим сахаром над LEFT JOIN, а любой RIGHT JOIN может быть выражен как LEFT JOIN, но времена, когда читаемость страдает, если вы пишете запрос в этом направлении.

Является ли этот совет еще современным и действенным? Есть ли веские причины, чтобы избежать RIGHT JOIN?

4b9b3361

Ответ 1

Там, по крайней мере, один механизм SQL, который не поддерживает RIGHT JOIN: SQLite. Возможно, причина, по которой совместимость была указана как проблема. Там могут быть и другие SQL-модули.

Ответ 2

Итак, RIGHT и LEFT JOIN выполняют одно и то же действие в типичных SQL-машинах. Таблица LEFT JOIN a в таблицу b возвращает все из a, которая существует в b, или нет. Таблица RIGHT JOIN a в таблицу b возвращает все из b, которая существует в a или нет. Перед оптимизацией запроса ключевые слова LEFT и RIGHT относятся только к действию, которое необходимо предпринять в какой таблице. Оптимизатор MySQL всегда будет нормализовать запрос и сделать JOIN эффективно LEFT JOIN. Таким образом, запись вашего запроса на использование LEFT JOIN вместо RIGHT будет стоить меньше в оптимизаторе.

Ответ 3

Это разумное соглашение, поэтому оно должно быть предпочтительным, если вы не хотите выразить что-то отличное или необычное для любого, кто мог бы его прочитать позже (важно, включая себя).

Ваш вопрос верен, хотя для ответа на его завершение потребуется либо:

1) встречный пример, где RIGHT JOIN не работает или работает со значительными различиями

-или -

2) доказательство того, что такой случай: 1 существует

Я думаю, это будет трудно. Ваше предложение о том, что совет, возможно, устарел, поскольку это письмо возможно. Это также может быть связано с некоторой морщиной MySQL, поддерживающей несколько базовых баз данных. Возможно, один из них ПРАВИЛЬНЫЙ ПРИСОЕДИНЯТЬ нетерпимость?