ITPub博客

首页 > 数据库 > 国内数据库 > 解析GBase 8c数据库count函数(一)

解析GBase 8c数据库count函数(一)

原创 国内数据库 作者:GBASE南大通用 时间:2026-03-13 16:33:37 0 删除 编辑

在南大通用GBase 8c(gbase database)数据库的日常开发与运维中,count 函数是使用频率最高的函数之一,作用是统计表中符合查询条件的记录行数。无论是业务数据统计、接口分页查询,还是数据校验场景,几乎都离不开它。

但在实际开发中,count(*)、count(1)与 count(column_name)这三种写法常常被混用,不少开发者存在如下误区:要么认为三者是等价的,可以随意替换;要么纠结于哪种写法性能更优,反而忽视了它们的核心差异。本文结合 GBase 8c 数据库的特性,通过具体示例,详细分下下三者的相同点与区别。

  1. 从功能上看,三者都是用于统计记录数量,且返回结果均为 bigint 类型,这是聚合函数 count决定的。

  2. 从使用场景来看,三者都可以与 where 过滤条件、group by 分组子句、having 筛选子句配合使用,实现精准的分组统计需求。比如统计某一班级的学生人数、某一时间段的订单数量,三者均可配合 where 条件实现。

  3. 在无 where 过滤条件、且表中指定列无 null 值的前提下,三者的统计结果一致。下面通过 gbase 环境下的示例,来说明下这一特性。

首先创建测试表并插入无 null 值的测试数据:

create table student(id int primary key, name varchar(50), age int); insert into student values(1, 'aaa', 20), (2, 'bbb', 21), (3, 'ccc', 22);

分别执行以下三条查询语句,最终返回结果均为 3,与表中实际记录数一致:

  • select count(*) from student; 直接统计所有记录行数,不区分列值。

  • select count(1) from student; 用常量 1 指代每条记录,判断记录存在并计数。

  • select count(id) from student; 统计 id 列非空的记录数,结果与前两者一致

上面是共性,下面将介绍三者的差异,这也是日常开发中最易踩坑的地方,主要集中在 null 值处理、统计逻辑与可读性、性能表现三个方面,其中 null 值处理是最重要的区别。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69979120/viewspace-3112286/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
GBASE南大通用,致力于成为用户最信赖的数据库产品供应商!

注册时间:2020-07-16

  • 博文量
    1319
  • 访问量
    1297258