Я пытаюсь объединить две таблицы, используя левое соединение, то есть table1 left join table2
. Мне бы хотелось, чтобы часть строк из A была соединена с B. Рекомендуется ли мне использовать дополнительный запрос для фильтрации строк из таблицы1 или избегать их в where, чтобы улучшить производительность моего запроса?Слева присоедините часть таблицы
select t1.a
,t1.b
,t2.c
from (select *
from table1
where a='x'
) t1 LEFT JOIN table2 t2 on t1.d=t2.d
или
select t1.a
,t1.b
,t2.c
from table1 t1 LEFT JOIN table2 t2 on t1.d=t2.d
where t1.a='x'
Они, вероятно, реализуется та же. Вы видите какую-либо разницу, когда вы используете 'EXPLAIN' для двух запросов? – Barmar
Просто используйте объяснение - см. Http://dev.mysql.com/doc/refman/5.0/en/explain.html - расскажет вам, как выполняется оператор. –
попробуйте использовать EXPLAIN, чтобы увидеть разницу. Но я считаю, что второй - лучший вариант, учитывая, что он прямолинейный и не должен делать внутренний запрос перед основным запросом. – Edper