表:
    订单表 t_order (索引id) 200W条
    订单明细表 t_order_detail( 索引 order_id) 1500W条
统计:每个订单下有多个商品常用a:
SELECT   
a.id AS '订单号',
COUNT(b.id) AS '商品数量'
FROM t_order a
LEFT JOIN 
t_order_detail b ON 
a.id=b.order_id
GROUP BY  a.id还有这个b:
SELECT  a.id as '订单号',
( SELECT COUNT(1) FROM t_order_detail b WHERE a.id=b.order_id) AS '商品数量'
FROM t_order AS a
那个好?b里面没写group by。

解决方案 »

  1.   

    好坏不太好说啊,EXPLAIN 看一下,我感觉第二种好点吧
      

  2.   

    B 看上去效率高一些。 但具体还是建议测试一下,另外看一下EXPLAIN SELECT 的执行计划。
      

  3.   

    我试过了是A好,
    正迎了那句话:有left join,就不要使用多表
      

  4.   

    现在的数据量测两个速度差不多
    a:b:b加上group by之后
      

  5.   

    从MYSQL的执行计划上来看A,B一样。显然MYSQL已经做了优化。