假设我的模型包含2个表格:个人和地址。一个人可以有O个,一个或多个地址。我试图执行一个查询,列出所有人,并包括他们分别拥有的地址数量。这里是2个查询,我要做到这一点:加入vs子查询来计算嵌套对象
SELECT
persons.*,
count(addresses.id) AS number_of_addresses
FROM `persons`
LEFT JOIN addresses ON persons.id = addresses.person_id
GROUP BY persons.id
和
SELECT
persons.*,
(SELECT COUNT(*)
FROM addresses
WHERE addresses.person_id = persons.id) AS number_of_addresses
FROM `persons`
,我想知道,如果一个比其他在性能方面更好。
这是什么'cube_models'表,为什么它只出现在第二个查询中?第二个查询使用相关的子查询,它通常倾向于比使用联接的类似查询慢。 –
我相信第一个会更快,但它们非常相似。只需在两者上运行执行计划并查看差异。我怀疑有没有更好的办法。 – sagi
我修复了cube_models,坏的复制/粘贴 – TrexXx