以下两个SQL查询有什么区别
select a.id, a.name, a.country
from table a
left join table b on a.id = b.id
where a.name is not null
和
select a.id, a.name, a.country
from table a
left join table b on a.id = b.id and a.name is not null
答案 0 :(得分:1)
除了语法之外没有区别。
答案 1 :(得分:1)
基于以下两个测试结果
select a.id, a.name,a.country from table a left join table b
on a.id = b.id
where a.name is not null
更快(237 Vs 460)。 据我所知,这是一个标准。
答案 2 :(得分:-2)
编辑:上面是我的原始答案,下面是支持它。
4个表,4个左连接,大约500,000个结果,第二个查询以一半的时间运行 。在尝试测试查询效率时,您应该选择更大的工作集...或者考虑CPU负载,RAM使用率,连接时间等一些其他因素。如果您将有少于1,000条记录或有限的流量优化将很难看到或证明。在生产环境中测试您的工作集并使用更好的表现(不仅仅是理论上),这很简单。
http://www.beaudurrant.com/images/sof/22302649.jpg
您可以在我的数据集中看到效率和结果的差异。此示例使用的是mySQL数据库。
注意:查询的目的是缓慢运行。