我有两组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;
答案 0 :(得分:2)
第一个查询是具有适当语法的更好的查询。第二个问题是一所旧学校"版本,不应该使用。
在性能方面,两个查询之间存在重要差异,第一个查询将在关节从句中直接过滤结果。第二个查询将在对它们应用WHERE
子句之前获取整个数据。
不要犹豫,毫无疑问地选择第一个版本。
希望这会对你有所帮助。