我读了很多关于 Dependent Query
不好,我应该用 JOIN
s、 我有一个将许多表连接在一起的代码,如下所示
SELECT a.a, b.b, c.c, d.d FROM
tablea a
JOIN tableb b ON a.id = b.id
JOIN tablec c ON a.id = c.id
JOIN tabled d ON a.id = d.id
WHERE a.id = 1
LIMIT 1
现在我可以使用一个依赖查询并从另一个表中选择一个值 a.a
这样地
SELECT a.a, b.b, c.c, d.d, (SELECT e FROM tablee WHERE id = a.a) AS e FROM
tablea a
JOIN tableb b ON a.id = b.id
JOIN tablec c ON a.id = c.id
JOIN tabled d ON a.id = d.id
WHERE a.id = 1
LIMIT 1
在这种情况下,我是否使用最容易阅读和编辑的 Dependent Query
,还是我只是坚持 JOIN
什么?
1条答案
按热度按时间bkhjykvo1#
我读了很多书,说使用依赖查询是不好的,我应该使用连接,
这是误导。当然,
JOIN
他们是非常强大的,不应该气馁。sql优化器理解JOIN
而且它们非常强大,易于阅读。这并不意味着相关子查询是错误的。例如,即使从性能的Angular 来看,如果你有一个索引,你的也很好
tablee(id, e)
. 实际上,这可能是编写查询的最佳方式。使用join
可能会产生类似的执行计划。如果你真的用了
join
,你需要一个left join
同样的语义。在某些情况下,相关子查询的性能更好。确切的细节可能因数据库而异,因此没有跨所有数据库的“通用”规则。
我的一条非常有力的建议是,当在查询中引用多个表时,请限定所有列名。所以,你应该写: