Вообще говоря, существует ли эмпирическое правило, когда использовать подзапрос и когда использовать внутреннее соединение? Для меня это обычно монета флип, потому что я действительно не понимаю внутренности.Бенчмаркинг INNER JOIN vs SUBSELECT
Когда следует использовать какой?
SELECT item1, item2 FROM table1
INNER JOIN table2 on table1.field=table2.field
Или -
SELECT item1, item2 FROM table1 WHERE field in
(SELECT field FROM table2)
Mysql обрабатывает последние хуже, особенно в старых версиях. Таким образом, правило: 1. предпочитайте 'INNER JOIN' 2. Используйте самую новую версию, которую вы можете себе позволить. – zerkms
Учебный пример, в котором версия' INNER JOIN' заняла всего лишь часть секунды, а подзапрос занял почти 30 минут: [JOIN vs. WHERE: Почему два запроса, которые получают одинаковые результаты, демонстрируют разницу в производительности на 3-4 порядка?] (Http://stackoverflow.com/questions/21723017/join-vs-where-why-do-two-queries-that-obtain- одинаковые-конечные результаты демонстрируют-3-4 ORD) – har07