2014-09-02 53 views
0

我有两组sql查询。两者都为我产生了期望的结果,但我不确定哪一个是有效的以及如何。有人可以向我解释吗?两个sql查询之间的区别(使用连接和不连接)

查询1:

SELECT 
od.id, od.order_id, c.firstname, od.category, od.quantity, 
od.price, o.order_date, u.username 
FROM 
orders o inner join order_detail od on o.id=od.order_id 
join customer c on c.customerid = o.customer_id 
join users u on u.userid = o.issued_by; 

问题2:

SELECT 
od.id, od.order_id, c.firstname, od.category, od.quantity, 
od.price, o.order_date, u.username 
FROM 
order_detail od, customer c, orders o, 
users u WHERE o.id = od.order_id 
AND o.customer_id = c.customerid 
AND u.userid = o.issued_by; 

回答

2

第一个查询是用适当的语法的更好的。第二个查询是“旧学校”版本,不应使用。

在性能方面,两个查询之间存在重要差异,第一个将在关节条款期间直接过滤结果。第二个查询将在应用WHERE子句之前获取整个数据。

不要犹豫,毫无疑问地选择第一个版本。

希望这会帮助你。