关于count方法一直存在争议,count(*)、count(列名)、count(常量),到底应该使用哪个?我认为应该是count(*),count(*)是SQL92定义的标准统计数的方法。我曾经有幸阅读过阿里巴巴的开发规范,里面提到强制使用count(*)。

我通过以下四个查询命令来说明三个方法的区别:

1.select count(*) from emp;
     2.select count(1) from emp;
     3.select count(job) from emp;
     4.select count(*) from emp where jobis not null;

第一条命令查出的结果是员工的数量。

第二条命令查出的结果是员工的数量。

第三条命令查出的结果是工种不为空的员工的数量。

第四条命令查出的结果是工种不为空的员工的数量。

显然,第一条与第二条的效果相同,第三条与第四条的效果相同。

至于1,2为什么选择1,因为1大家都能看懂,2已经不止一个人问过我是什么意思。至于3,4为什么选择4,因为4大家都能看懂,3会给不同的读者带来不同的理解。

有部分人可能会说count(*)没有count(1)的效率高,我在一张包含33554432条记录的表中,使用count(*)和count(1)测试,所消耗的时间都是3到4秒之间。

所以,大家完全可以不要因为效率问题而选择使用count(1)了。

到底应该使用count(*) 还是count(1)相关推荐

  1. 执行COUNT(1)、COUNT(*) 与 COUNT(列名) 到底有什么区别?

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:干掉 Navicat:这个 IDEA 的兄弟真香!个人原创100W+访问量博客:点击前往,查看更多 来源:blo ...

  2. sql 在某表中加入一列count所有数据_执行COUNT(1)、COUNT(*) 与 COUNT(列名) 到底有什么区别?...

    击关注上方"SQL数据库开发", 设为"置顶或星标",第一时间送达干货. 1.  count(1) and count(*) 从执行计划来看,count(1)和 ...

  3. 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题...

    1.关于count(1),count(*),和count(列名)的区别 相信大家总是在工作中,或者是学习中对于count()的到底怎么用更快.一直有很大的疑问,有的人说count(*)更快,也有的人说 ...

  4. 你当真了解count(*)count(id)count(1)吗?

    首先什么是count? 关于count函数,在mysql中也有描述: 简单翻译一下: 1.COUNT(expr) ,返回SELECT语句检索的行中expr的值不为NULL的数量.结果是一个BIGINT ...

  5. mysql中count(*)和count(1)和count(column)区别

    在日常的mysql使用中,我们经常会看到SELECT COUNT(*).SELECT COUNT(1)等查询语句,他们到底有什么区别呢?今天我就来总结下. 我们先从函数的含义说起: count() 统 ...

  6. MySQL 中 count(*) 和 count(1) 有什么区别?哪个性能最好?

    当我们对一张数据表中的记录进行统计的时候,习惯都会使用 count 函数来统计,但是 count 函数传入的参数有很多种,比如 count(1).count(*).count(字段) 等. 到底哪种效 ...

  7. sql语句中count(*),count(1),count(id)区别详解

    1.前言 相信大多数有一定经验的phper都碰到过这个问题,count(*)和count(1),以及count('id')列有什么区别呢,这三者到底有什么不同呢,今天我将为此做深层的剖析,各位猿友们, ...

  8. 性能大PK count(*)、count(1)和count(列)

    最近的工作中,我听到组内两名研发同学在交流数据统计性能的时候,聊到了以下内容: 数据统计你怎么能用 count() 统计数据呢,count() 太慢了,要是把数据库搞垮了那不就完了么,赶紧改用 cou ...

  9. count(*) 和 count(1) 有什么区别?哪个性能最好?

    前言 当我们对一张数据表中的记录进行统计的时候,习惯都会使用 count 函数来统计,但是 count 函数传入的参数有很多种,比如 count(1).count(*).count(字段) 等. 到底 ...

  10. MySQL的count(*) ,count(1),count(id)的区别

    数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查. 在数据库的增删改查操作中,使用最频繁的就是查询操作.而在所有查询操作中,统计数量操作更 ...

最新文章

  1. Linux I2C(一)之常用的几种实例化(i2c_client ) 【转】
  2. (转)Linux grep
  3. linux查看java jdk安装路径和设置环境变量
  4. oracle 对象管理 01_用户及权限
  5. DelayQueue源码
  6. 如何在使用摩托罗拉上的RSS阅读器应用进行一次订阅
  7. mysql部署jar_mysql+jar踩坑记录
  8. PCH文件的创建和配置
  9. 尚未注册 OLE DB 访问接口 SQLNCLI10 7043 错误
  10. snort配置文件中的PORT解析
  11. 通过Intent传递类对象
  12. Android-HandlerThread详解
  13. linux 添加删除用户
  14. Spring的组件自动扫描机制
  15. python脚本清除linux cron中过期的定时计划
  16. android开发学习——android studio 引入第三方库的总结
  17. [Shader2D]浮雕效果
  18. 微博简单的免登陆获取
  19. 绕过apple id的那些事
  20. 单身的程序猿伤不起,在神棍节感慨下

热门文章

  1. Atitit 人脸识别 眼睛形态 attilax总结
  2. Atitit 组织架构的如何划分 划分方法attilax大总结
  3. atitit 2017年学业计划 v5 r818.xlsx
  4. Atitit 数据处理查询 中的异常标准化草案 jpa jdbc hb  oql规范attilax总结
  5. Atitit.异步编程 java .net php python js 的比较
  6. 中基协会长洪磊:尽快制定大类资产配置管理办法 推非保本理财转型
  7. 如何在云上高效地实践“自动化”和“弹性”
  8. 《巴伦周刊》:除了芯片,英特尔还是一家顶级风投
  9. 我和Linux,不得不说的故事
  10. 【语音识别】基于matlab说话人识别系统【含Matlab源码 1704期】