有些地方两者都可以用,比如
select studentid, avg(score)
这种情况下哪个会快一点
解析:
select studentid, avg(score) from studentScore group by studentidhaving left(studentid, 1)='0'
1、分组汇总
2、过滤非法项
left(studentid,1)='0'是个效率不很高的过滤条件,如果分组会使数据量极大减少(比如每个人有几十门课),而且要过滤掉的只是很小一部分学生,这种写法会有比较高的效率
select studentid, avg(score) from studentScore whereleft(studentid, 1)='0' group by studentid
1、过滤非法项
2、分组汇总
虽然left(studentid,1)='0'是个效率不很高的过滤条件,但是如果你要从几百万学生中找到几十个学生3-5门功课的平均分,还是应该很明智的选择它