count是一种最简单的聚合函数,一般也是我们第一个开始学习的聚合函数,那么他们之间究竟由什么区别呢?

有的人说count(1)和count(*)他们之间有区别,而有的人说他们之间没有区别那么他们之间到底有没有区别呢。

从执行结果来说:

count(1)和count(*)之间没有区别,因为count(*)count(1)都不会去过滤空值,

但count(列名)就有区别了,因为count(列名)会去过滤空值。

从执行效率来说:

他们之间根据不同情况会有些许区别,MySQL会对count(*)做优化。

(1)如果列为主键,count(列名)效率优于count(1)

(2)如果列不为主键,count(1)效率优于count(列名)

(3)如果表中存在主键,count(主键列名)效率最优

(4)如果表中只有一列,则count(*)效率最优

(5)如果表有多列,且不存在主键,则count(1)效率优于count(*)

---------------------------------------------------------------------------------------------------------

补充关于count(1)count(*)原理 引用百度知道专业回答

count(1),其实就是计算一共有多少符合条件的行。
1并不是表示第一个字段,而是表示一个固定值。
其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1.

count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。

count(*)和count(1)和count(列名)的区别相关推荐

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

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

  2. MySQL COUNT函数优化及count(1)/count(*)/count(列名)的区别

    count函数优化 使用近似值: 在某些应用场景中,不需要完全精确的值,可以参考使用近似值来代替,比如可以使用explain来获取近似的值.其实在很多OLAP的应用中,需要计算某一个列值的基数,有一个 ...

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

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

  4. 【优化】COUNT(1)、COUNT(*)、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)、COUNT(允许为空列)、COUNT(DISTINCT 列名)

    [优化]COUNT(1).COUNT(*).COUNT(常量).COUNT(主键).COUNT(ROWID).COUNT(非空列).COUNT(允许为空列).COUNT(DISTINCT 列名) 1. ...

  5. count(0)、count(1)和count(*)、count(列名) 的区别

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

  6. count(*)、count(1)和count(列名)的区别

    count(*).count(1)和count(列名)的区别 1.执行效果上:   l  count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL l  count(1)包 ...

  7. SQL报错:Column count doesn‘t match value count at row 1

    Column count doesn't match value count at row 1 意思是:列数与第1行的值数不匹配 比如:person表中有4个字段(id,name,pwd,gender ...

  8. MySQL-count(*)、count(1)、count(主键)、count(非索引列)、count(索引列)性能分析

    本文主要讨论的是count()函数在没有where的情况下统计性能 环境: MySQL 数据库5.7.23 服务器4核8G 带宽5M 1000W数据 为防止缓存影响,测试前已经将缓存关闭 一: 先说结 ...

  9. mysql报错:Column count doesn‘t match value count at row 1

    msyql执行insert插入语句,提示Column count doesn't match value count at row 1错误. 意思是插入的数据与数据库表的字段类型定义不相匹配. 解决办 ...

最新文章

  1. Xcode6的新特性、iPhone6和iPhone6Plus的适配,xcode6iphone6
  2. java传值的代码_SpringMVC的简单传值(实现代码)
  3. ASP.NET Core 2调用Azure云上的PowerBI报表展示
  4. MySQL5安装配置笔记【超详细】
  5. [导入]一个很有个性的网站??
  6. 6.Prometheus 监控技术与实践 --- 告警处理
  7. 金融数据挖掘与分析(三)-案例实战(1)
  8. GPS定位的优点和缺点与室内定位
  9. BPM管理系统解决方案
  10. 微信小程序怎么添加到主屏幕将微信小程序放到手机桌面?
  11. 华为企业BG总裁阎力大:数字化转型激活指数级增长
  12. Python学习笔记:使用PIL批量合成jpg+png图片,用于水印、合并图片,生成YOLO数据集+标注数据等等
  13. C语言——整数各位数字求和
  14. 【微观】需求、供给和均衡价格
  15. uniapp 小程序 easycom 配置 找不到组件 失效问题
  16. Oracle 数据库删除完全重复数据
  17. dynamic 365 前端操作
  18. 六西格玛管理测量系统的特性
  19. python中emuterate用法_多个conemu窗口如何区分?
  20. Python Pandas 导入dta文件的方法

热门文章

  1. python爬虫视频下载代码_Python3百行代码批量下载抖音视频|python爬虫|python入门|python教程...
  2. 零售业迎来全新发展,这个技术少不了
  3. 联盟训练在游戏AI多样化的探索
  4. 爬取最新斗图啦网站上表情包
  5. LeetCode26 简单题 Java题解
  6. 洞穴逃生 java_洞穴逃生
  7. 语文七年级计算机作文,七年级语文考试反思作文600字(精选7篇)
  8. 调用wx.relaunch报错:fail can not invoke relaunch in background
  9. C# 如何获取checkedListBox 的选中项
  10. 记一次因证书问题导致请求失败问题SSLHandshakeException