聚合函数与分组
在使用基本的SQL语句从数据库中抽取数据后,然后在应用程序代码中进行汇总。但是,在网络环境中,如果从数据库中返回成千上万条记录,仅仅是为了得到一个汇总值,这样的效率显然很差的。使用SQL中的聚合函数在数据库中计算,最后通过网络返回单一的值,无疑是更好的解决方。 如:select s_name,avg(s_score) from t_Student where s_score>=60 and s_name!='jr' group by s_name having avg(s_score)>=70 order by avg(s_score) desc; 1.先执行where对全表数据做筛选 2.针对筛选后的结果集按s_name进行分组,将s_name相同的记录放在1组 3.针对每1组执行select s_name,avg(s_score),有几组就执行几次 4.将每组的执行结果拼起来5.对上面的结果根据having做筛选 6.排序4、 WHERE和HAVING的区别: 1、WHERE用在分组之前,不能包含聚合函数 2、HVAING用在分组之后,对分组后的结果进行筛选,有HAVING,必定会有GROUP BY4、 索引: 1、索引是独立的数据库对象,也需要维护 2、索引提高查询速度,降低增删改速度 3、索引只会由满足一定条件的查询触发,并不是越多越好 4、以下情况不适合建立索引:增删改操作很频繁/查询返回的数据量过大 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |