前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【数据库设计和SQL语法的基础知识】--注意事项--语句设计--统计类语句

【数据库设计和SQL语法的基础知识】--注意事项--语句设计--统计类语句

作者头像
喵叔
发布2024-01-10 10:34:31
1420
发布2024-01-10 10:34:31
举报
文章被收录于专栏:喵叔's 专栏喵叔's 专栏

根据实际应用场景划分,SQL语句可分为统计类、查询类、更新类等不同类型。在语句设计中,核心关注点是优化执行效率,旨在降低语句执行耗时,并最小化对CPU、内存、I/O以及网络带宽等资源的消耗。为提高效率,通常采用一系列手段,包括充分利用索引、缩小操作粒度、简化操作复杂度等。下面我们先来看一下统计类语句的注意事项。

一、统计类语句
  1. 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标准的统计行数语法,与具体数据库无关。
  2. sum()的用法:
    • sum(col): 当某一列的值全为null时,count(col)返回结果为0,而sum(col)返回结果为null,需注意空指针异常(NPE)问题。
  3. 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查询效率。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、统计类语句
  • 二、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档