Mysql 为什么组合计数查询执行时间太长?

Mysql 为什么组合计数查询执行时间太长?,mysql,Mysql,服务器无法在此查询上创建字节,执行此查询需要的时间太长: 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 porucen

服务器无法在此查询上创建字节,执行此查询需要的时间太长:

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

运行
explain select…
查看执行计划我已经添加了屏幕。您可以尝试强制索引:
。。。内部连接生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产线生产