我正在尝试使用左连接加入两个表,即table1 left join table2
。
我只想将A中的部分行与B连接。是否建议我使用子查询来过滤table1中的行,或者在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'
答案 0 :(得分:0)
检查查询计划,但我怀疑它会有什么不同。
答案 1 :(得分:0)
这在很大程度上取决于数据库的结构和内容。最好的方法是查看查询计划并将其与两个版本的查询进行比较。
您可以找到有用的文档:MySQL Query Execution Plan