какой метод лучше присоединиться к таблицам mysql? - PullRequest
4 голосов
/ 25 апреля 2011

В чем разница между этими двумя методами выбора данных из нескольких таблиц.Первый не использует JOIN , а второй использует.Какой метод является предпочтительным?

Метод 1:

SELECT t1.a, t1.b, t2.c, t2.d, t3.e, t3.f
  FROM table1 t1, table2 t2, table3 t3
 WHERE t1.id = t2.id
   AND t2.id = t3.id
   AND t3.id = x

Метод 2:

SELECT t1.a, t1.b, t2.c, t2.d, t3.e, t3.f
FROM `table1` t1
JOIN `table2` t2 ON t1.id = t2.id
JOIN `table3` t3 ON t1.id = t3.id
WHERE t1.id = x

Ответы [ 3 ]

2 голосов
/ 25 апреля 2011

Для вашего простого случая они эквивалентны. Несмотря на то, что ключевое слово «JOIN» отсутствует в методе № 1, оно все еще выполняет объединения.

Тем не менее, метод # 2 предлагает гибкость, позволяющую создавать дополнительные условия в условии JOIN, которые не могут быть выполнены с помощью предложений WHERE. Например, когда вы делаете псевдонимные мульти-объединения для одной и той же таблицы.

select a.id, b.id, c.id
from sometable A
left join othertable as b on a.id=b.a_id and some_condition_in_othertable
left join othertable as c on a.id=c.a_id and other_condition_in_othertable

Помещение двух дополнительных условий в предложение wherec заставит запрос ничего не возвращать, поскольку оба условия не могут быть истинными одновременно в предложении where, но возможны в соединении.

0 голосов
/ 25 апреля 2011

Методы явно идентичны по производительности , это просто новый против старого синтаксиса.

0 голосов
/ 25 апреля 2011

Я не думаю, что есть большая разница.Вы можете использовать оператор EXPLAIN, чтобы проверить, что MySQL делает что-то по-другому.Для этого тривиального примера я сомневаюсь, что это имеет значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...