2013-11-16 4 views
0

Я пытаюсь объединить две таблицы, используя левое соединение, то есть 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' 
+1

Они, вероятно, реализуется та же. Вы видите какую-либо разницу, когда вы используете 'EXPLAIN' для двух запросов? – Barmar

+1

Просто используйте объяснение - см. Http://dev.mysql.com/doc/refman/5.0/en/explain.html - расскажет вам, как выполняется оператор. –

+0

попробуйте использовать EXPLAIN, чтобы увидеть разницу. Но я считаю, что второй - лучший вариант, учитывая, что он прямолинейный и не должен делать внутренний запрос перед основным запросом. – Edper

ответ

0

Проверьте план запроса, но я сомневаюсь, что это было бы никакой разницы.

0

Это очень зависит от структуры и содержания вашей базы данных. Лучший способ - заглянуть в план запроса и сравнить его для обеих версий вашего запроса.

Вы можете найти эту документацию полезной: MySQL Query Execution Plan

Смежные вопросы