count()用法

count()语义:该函数为一个聚合函数,对于返回的结果集一行行地判断,如果count函数地参数不是NULL,累计值就加1,否则不加。最后返回累计值。
所以count(*),count(主键id)和count(1)都表示返回满足条件地结果集地总行数;
而count(字段)则表示返回满足条件地数据行里面,参数“字段”不为NULL的总个数。

count(主键id)
InnoDB引擎会遍历整张表,把每一行的id值都取出来,返回给server层。
sever层拿到id后,判断id是不可能为空的,就按行累加

count(1)
InnoDB引擎遍历整张表,但不取值。server层对于返回的每一行,放一个数字“1”进去,判断是不可能为空的,按行累加

count(字段)
1、如果这个字段定义为not null的话,一行行地从记录里面读出这个字段,判断不能为null,按行累加
2、如果这个字段允许为null,那么在执行的时候,要判断字段是否为null,不是null才累加

count(*)
不会把全部字段取出来,而是专门做了优化,不取值。并且count(*)肯定不是null,按行累加。

所以按照效率排序的话: count(字段) < count(主键id) < count(1) 约等于 count(*)

InnoDB是支持事务的,MyISAM不支持事务。
InnoDB每一行记录都要判断自己是否对这个会话是否可见,所以对于count(*)请求来说,InnoDB只好把数据一行一行地读出依次判断,可见地行才能够用于计算“基于这个查询”地表地总行数。

《MySQL——count()逻辑》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. 有什么好的中小企业企业管理软件?
  2. Openstack 实现技术分解 (1) 开发环境 — Devstack 部署案例详解
  3. 手机操作系统如何实现跨平台开发和使用
  4. 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...
  5. 计算机专业英语作业1,计算机专业英语作业1
  6. [014]模板-模板实参推导
  7. python调试方法logging_python中logging使用方法
  8. Java中将16进制字符串转换成汉字
  9. Django使用 celery发送邮件、Rabbitmq-AMQP
  10. android谷歌地图删除marker,无法将marker从google地图上删除
  11. echarts 引入百度地图
  12. linux eclipse glib.h,eclipse Glib
  13. 天数最少的年份_农历辛丑年仅有354天是怎么回事 平年比闰年少几天
  14. 使用MPC设计控制器
  15. Java并发编程进阶——并发锁
  16. Django 新建自定义用户后无法创建表的问题
  17. python中offset_python pandas tseries.offsets.DateOffset用法及代码示例
  18. DTV下的AD Switch和Hearing Impaired功能介绍
  19. STM8L低功耗设置,深坑。。。
  20. Android直播实现(一)Android端推流、播放

热门文章

  1. python编程游戏代码 游戏人物如何升级_如何玩游戏提高python编程技能?
  2. 插入文件找不到桌面了?
  3. 韦冬雪计算机应用,捕获效应下RFID防碰撞算法的研究与应用
  4. 记一次应急响应到溯源入侵者
  5. linux 查看文件哈希码,使用linux的sha1sum命令查看效验文件哈希值命令
  6. python默认数据转换_Python_数据类型转换
  7. JS_理解函数参数按值传递
  8. vue 动态显示三级路由
  9. 解决swiper-slide在ion-slide-box不滑动的问题(暂且这么描述)
  10. AFN\HTTPS\UIWebView