两个sql查询之间的区别(使用join和without join)

时间:2014-09-02 05:29:59

标签: mysql sql join inner-join

我有两组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;

1 个答案:

答案 0 :(得分:2)

第一个查询是具有适当语法的更好的查询。第二个问题是一所旧学校"版本,不应该使用。

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

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

希望这会对你有所帮助。