Сравнение MySQL Cross и Inner Joins - PullRequest
1 голос
/ 17 сентября 2008

Каковы потенциальные плюсы и минусы каждого из этих запросов, учитывая различные базы данных, конфигурации и т. Д.? Есть ли когда-нибудь время, когда один будет более эффективным, чем другой? Наоборот? Есть ли еще лучший способ сделать это? Вы можете объяснить, почему?

Запрос 1:

SELECT 
  *
FROM
  table_a, table_b, table_c
WHERE
  table_a.id = table_b.id AND
  table_a.id = table_c.id AND
  table_a.create_date > DATE('1998-01-01');

Запрос 2:

SELECT 
  *
FROM
  table_a 
INNER JOIN table_b ON
  table_a.id = table_b.id
INNER JOIN table_c ON
  table_a.id = table_c.id
WHERE
  table_a.create_date > DATE('1998-01-01');

Ответы [ 4 ]

2 голосов
/ 17 сентября 2008

Тот же запрос, другая редакция спецификации SQL. Оптимизатор запросов должен разработать тот же план запросов для них.

0 голосов
/ 17 сентября 2008

На самом деле, я думаю, что запрос 2 более читабелен. Подумайте, когда вы скажете 5,6 или 7 таблиц, когда вы нажмете предложение where в первом запросе. После присоединения может быть грязно.

Что касается производительности, я понятия не имею. Бьюсь об заклад, если вы зайдете на сайт MySQL, там будет информация - возможно, примеры объединений.

Профессионально, я работал только над одним проектом. Но это был большой вопрос, и они всегда следовали формату запроса 2. Это было с использованием Microsoft SQL Server, хотя.

0 голосов
/ 17 сентября 2008

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

Извините за озвучивание домашней работы-у. Думаю, я провел слишком много лет в качестве ТА.

0 голосов
/ 17 сентября 2008

Согласен, это звучит слишком похоже на домашнюю работу!

Если это не домашняя работа, то, наверное, самый простой ответ - читабельность.

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

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