mysql 分组合计sql求优化

有两表T1,T2。

T1约9000条数据,有以下列:

id,eid,name

T2约50000条数据,有以下列:

id,eid,num



现要查出T1表中eid在T2表中同一个eid的num合计,其中求合计后的数据总数sql如下,耗时5秒,求优化:

SELECT COUNT(*) FROM(
SELECT T1.id,T1.eid,T1.name, t.num FROM T1
LEFT JOIN (SELECT eid, COUNT(*) AS num FROM T2 GROUP BY eid) t ON t.eid = T1.eid
WHERE t.num > 0
) t

必须这样写啊,弟弟

SELECT count(*) FROM T1
 INNER JOIN (SELECT eid, COUNT(*) AS num FROM T2 GROUP BY eid HAVING COUNT(*)>0) t ON t.eid = T1.eid 

没有比较用嵌套查询啊 分组可以放到where后面

SELECT COUNT(t.*) FROM t1 t LEFT JOIN t2 t2 ON t.eid = t2.eid WHERE t2.num >0 GROUP BY t2.eid
你用这条sql执行下试试

SELECT COUNT(t.*) FROM t1 t LEFT JOIN t2 t2 ON t.eid = t2.eid WHERE t2.num >0 GROUP BY t2.eid
这样写效果更慢,要1分多钟

最后查到有个查询字段是varchar(2000)太长,联表查询使用的是ALL类型,要返回全部结果,所以很慢。解决办法:二次查询,这个字段另外单独查