mysql оставил соединение с условием на table1 - PullRequest
0 голосов
/ 27 марта 2012

Я хотел бы сделать левое соединение, используя только определенные строки первой таблицы в MySQL. В настоящее время я делаю что-то вроде:

SELECT students.* FROM students             
LEFT JOIN courses                           
ON students.id = courses.id                 
WHERE students.id = 6

Но будет ли MySQL сначала выбирать строки из таблицы 1 (студенты), удовлетворяющие student.id = 6, перед тем, как выполнит левое соединение? Если нет, есть ли способ заставить MySQL сделать так? Спасибо.

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Да, попробуйте это:

SELECT students.* FROM students             
LEFT JOIN courses                           
ON students.id = courses.id                 
HAVING students.id = 6
LIMIT 1
0 голосов
/ 27 марта 2012

Мне кажется, что вы пытаетесь оптимизировать под БД. Если запрос не является медленным, и ваш набор данных тестирования является разумным приближением к производственной БД, то по многим причинам не рекомендуется делать это.

С учетом сказанного (может быть, я не прав, так что игнорируйте меня)

Я думаю, что вы пытаетесь сказать: «Как я могу ускорить процесс, ограничив количество строк, на которые БД смотрит во время запроса»

Лучший способ сделать это - убедиться, что у вас есть правильные индексы для таблиц, полей, которые вы собираетесь запросить. Индексы очень быстро. Если вы еще не проиндексировали поля .id обеих таблиц, добавьте эти индексы в БД, и это может решить вашу проблему.

...