服务器不会对此查询进行字节处理,执行时间太长:
select prodavac.id, count(artikl.id) as brojartikala, count(poruceno.id) as brojporudzbina from prod_prodavac prodavac
inner join prod_artikl artikl
on prodavac.id=artikl.prodavacid
inner join prod_poruceno poruceno
on prodavac.id=poruceno.prodavacid
group by prodavac.id
另一方面,两个半查询都运行得非常快:
select prodavac.id, count(artikl.id) as brojartikala from prod_prodavac prodavac
inner join prod_artikl artikl
on prodavac.id=artikl.prodavacid
group by prodavac.id
还有另一个:
select prodavac.id, count(poruceno.id) as brojporudzbina from prod_prodavac prodavac
inner join prod_poruceno poruceno
on prodavac.id=poruceno.prodavacid
group by prodavac.id
order by prodavac.id asc
我真的很想在一个查询中完成它,那么如何正确地合并它们呢?所有 ID 都是索引整数。
解释选择显示:
最佳答案
根据表和数据之间的关系,您的组合查询甚至可能不会返回所需的结果。对于简单的关系计数,您可以在 SELECT 子句中使用相关子查询:
select prodavac.id, (
select count(*)
from prod_artikl artikl
where artikl.prodavacid = prodavac.id
) as brojartikala, (
select count(*)
from prod_poruceno poruceno
where poruceno.prodavacid = prodavac.id
) as brojporudzbina
from prod_prodavac prodavac
order by prodavac.id asc
关于mysql - 为什么组合计数查询执行时间太长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59335054/