到底应该使用count(*) 还是count(1)
关于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)相关推荐
- 执行COUNT(1)、COUNT(*) 与 COUNT(列名) 到底有什么区别?
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:干掉 Navicat:这个 IDEA 的兄弟真香!个人原创100W+访问量博客:点击前往,查看更多 来源:blo ...
- sql 在某表中加入一列count所有数据_执行COUNT(1)、COUNT(*) 与 COUNT(列名) 到底有什么区别?...
击关注上方"SQL数据库开发", 设为"置顶或星标",第一时间送达干货. 1. count(1) and count(*) 从执行计划来看,count(1)和 ...
- 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题...
1.关于count(1),count(*),和count(列名)的区别 相信大家总是在工作中,或者是学习中对于count()的到底怎么用更快.一直有很大的疑问,有的人说count(*)更快,也有的人说 ...
- 你当真了解count(*)count(id)count(1)吗?
首先什么是count? 关于count函数,在mysql中也有描述: 简单翻译一下: 1.COUNT(expr) ,返回SELECT语句检索的行中expr的值不为NULL的数量.结果是一个BIGINT ...
- mysql中count(*)和count(1)和count(column)区别
在日常的mysql使用中,我们经常会看到SELECT COUNT(*).SELECT COUNT(1)等查询语句,他们到底有什么区别呢?今天我就来总结下. 我们先从函数的含义说起: count() 统 ...
- MySQL 中 count(*) 和 count(1) 有什么区别?哪个性能最好?
当我们对一张数据表中的记录进行统计的时候,习惯都会使用 count 函数来统计,但是 count 函数传入的参数有很多种,比如 count(1).count(*).count(字段) 等. 到底哪种效 ...
- sql语句中count(*),count(1),count(id)区别详解
1.前言 相信大多数有一定经验的phper都碰到过这个问题,count(*)和count(1),以及count('id')列有什么区别呢,这三者到底有什么不同呢,今天我将为此做深层的剖析,各位猿友们, ...
- 性能大PK count(*)、count(1)和count(列)
最近的工作中,我听到组内两名研发同学在交流数据统计性能的时候,聊到了以下内容: 数据统计你怎么能用 count() 统计数据呢,count() 太慢了,要是把数据库搞垮了那不就完了么,赶紧改用 cou ...
- count(*) 和 count(1) 有什么区别?哪个性能最好?
前言 当我们对一张数据表中的记录进行统计的时候,习惯都会使用 count 函数来统计,但是 count 函数传入的参数有很多种,比如 count(1).count(*).count(字段) 等. 到底 ...
- MySQL的count(*) ,count(1),count(id)的区别
数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查. 在数据库的增删改查操作中,使用最频繁的就是查询操作.而在所有查询操作中,统计数量操作更 ...
最新文章
- Linux I2C(一)之常用的几种实例化(i2c_client ) 【转】
- (转)Linux grep
- linux查看java jdk安装路径和设置环境变量
- oracle 对象管理 01_用户及权限
- DelayQueue源码
- 如何在使用摩托罗拉上的RSS阅读器应用进行一次订阅
- mysql部署jar_mysql+jar踩坑记录
- PCH文件的创建和配置
- 尚未注册 OLE DB 访问接口 SQLNCLI10 7043 错误
- snort配置文件中的PORT解析
- 通过Intent传递类对象
- Android-HandlerThread详解
- linux 添加删除用户
- Spring的组件自动扫描机制
- python脚本清除linux cron中过期的定时计划
- android开发学习——android studio 引入第三方库的总结
- [Shader2D]浮雕效果
- 微博简单的免登陆获取
- 绕过apple id的那些事
- 单身的程序猿伤不起,在神棍节感慨下
热门文章
- Atitit 人脸识别 眼睛形态 attilax总结
- Atitit 组织架构的如何划分 划分方法attilax大总结
- atitit 2017年学业计划 v5 r818.xlsx
- Atitit 数据处理查询 中的异常标准化草案 jpa jdbc hb oql规范attilax总结
- Atitit.异步编程 java .net php python js 的比较
- 中基协会长洪磊:尽快制定大类资产配置管理办法 推非保本理财转型
- 如何在云上高效地实践“自动化”和“弹性”
- 《巴伦周刊》:除了芯片,英特尔还是一家顶级风投
- 我和Linux,不得不说的故事
- 【语音识别】基于matlab说话人识别系统【含Matlab源码 1704期】