【数据库设计和SQL语法的基础知识】--注意事项--语句设计--统计类语句
2024-01-09 06:58:25
根据实际应用场景划分,SQL语句可分为统计类、查询类、更新类等不同类型。在语句设计中,核心关注点是优化执行效率,旨在降低语句执行耗时,并最小化对CPU、内存、I/O以及网络带宽等资源的消耗。为提高效率,通常采用一系列手段,包括充分利用索引、缩小操作粒度、简化操作复杂度等。下面我们先来看一下统计类语句的注意事项。
一、统计类语句
-
count()的不同用法:
-
count(*): 对应用优化,仅进行行累加,不取全部字段值,无论是否包含null。
-
count(主键id): 对InnoDB引擎而言,遍历整张表取出每行id值,由于主键不为空,按行累加。
-
count(1): InnoDB引擎遍历整张表,不取值,但对于每一行返回填充数字1,实际按行累加。
-
count(字段): 如果字段定义为not null,实际按行累加;如果允许为null,额外判断只累加非null的行。
-
count(distinct col): 计算该列除null之外的不重复数量,例如,count(distinct col1, col2)。
-
注意:
- 统计表中记录数时,优先使用count(*),因为它是SQL92标准的统计行数语法,与具体数据库无关。
-
-
sum()的用法:
- sum(col): 当某一列的值全为null时,count(col)返回结果为0,而sum(col)返回结果为null,需注意空指针异常(NPE)问题。
-
group by的使用:
-
基本规则:
- 在select后的列中,所有未使用聚合函数的列必须出现在group by子句中。
- 例如:
select point, count(id) from t_table group by point
,point列未使用聚合函数,必须在group by子句中出现。
-
与order by的结合使用:
- group by与order by联合使用时,order by要位于group by之后。
- order by子句中的列必须包含在聚合函数或group by子句中。
-
二、总结
SQL语句根据应用场景可划分为统计、查询、更新等类型,着重在设计中优化执行效率,降低耗时及资源消耗。采用手段包括索引充分利用、操作粒度缩小、复杂度简化。在统计类语句中,count()有多用法,推荐优先使用count(*)。sum()需注意空指针异常。group by与order by联合使用时,遵循列出现规则。这些注意事项有助于提高SQL查询效率。
文章来源:https://blog.csdn.net/gangzhucoll/article/details/135469748
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!