create table t(id int PRIMARY KEY ,name varchar(20),m money)
INSERT t SELECT 1,'a',11
UNION ALL SELECT 2,'a',15
UNION ALL SELECT 3,'b',16
UNION ALL SELECT 4,'b',17
UNION ALL SELECT 5,'c',27
UNION ALL SELECT 6,'c',57
UNION ALL SELECT 7,'c',62
UNION ALL SELECT 8,'b',123
UNION ALL SELECT 9,'b',45
UNION ALL SELECT 10,'a',42select name,sum(m)as mm from t
group by name
having sum(m)>33当数据量有几十万条时,当我要取sum(m)大于某个数的所有name的时候,因为还要和其它表链接,select的字段也比较多,大概有20个,用having感觉很慢。不知道还有别的更好的方法吗?
INSERT t SELECT 1,'a',11
UNION ALL SELECT 2,'a',15
UNION ALL SELECT 3,'b',16
UNION ALL SELECT 4,'b',17
UNION ALL SELECT 5,'c',27
UNION ALL SELECT 6,'c',57
UNION ALL SELECT 7,'c',62
UNION ALL SELECT 8,'b',123
UNION ALL SELECT 9,'b',45
UNION ALL SELECT 10,'a',42select name,sum(m)as mm from t
group by name
having sum(m)>33当数据量有几十万条时,当我要取sum(m)大于某个数的所有name的时候,因为还要和其它表链接,select的字段也比较多,大概有20个,用having感觉很慢。不知道还有别的更好的方法吗?
就语句本身来说,我感觉已无从优化了
select name,sum(m)as mm from t group by name having sum(m)>33
这句是没有什么优化的。有没有更好的方法去替换having呢?