- count()是一个聚合函数,对于返回的结果集一行行地判断,如果 count 函数中参数对应的字段值不是 Null,累计值就加 1,否则不加,最后返回累计值。
- count(*)、count(1)和count(主键 id) 都返回满足条件的结果集的总行数;而 count(字段),则返回字段中值不为 Null 的总行数。
以weibo_user表为例,表中共有99条数据,created_at字段值不为Null的数据有6条![]()
- count(*)查询到全部数据
![]()
- count(id)查询到全部数据
![]()
- count(1)查询到全部数据
![]()
- count(create_at)只查询到6条数据,值不为NULL的数据
![]()
- 如果数据表没有主键,那么count(1)比count()快;
- 如果有主键,那主键作为count的条件也比count()要快;
- 如果表只有一个字段,count(*)就是最快的。