count(主键id)

InnoDB 会遍历全表,取每行的主键 id,返回给 server 层,server 层拿到数据后,进行判断累加。

count(1)

InnoDB 仍遍历全表,但是不取值,server 层对返回的每一行数据新增一个 1,然后进行判断累加;

因此,count(1)要更快些,因为无需取值。从引擎返回 id 会涉及到解析数据行,以及拷贝字段值的操作。

count(字段):

  1. 如果这个“字段”是定义为 NOT NULL 的话,一行行地从记录里面读出这个字段,判断不能为 NULL ,按行累加;
  2. 如果这个“字段”定义允许为 NULL,那么执行的时候,判断到有可能是 NULL,还要把值取出来再判断一下,不是 NULL 才累加。

count(*)

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

结论:按照效率排序的话,count(字段)<count(主键
id)<count(1)≈count(),所以我建议你,尽量使用count()。

引用:https://www.jianshu.com/p/e1229342a5e2

mysql中count(*),count(字段),count(1)的区别相关推荐

  1. mysql中查询一个字段属于哪一个数据库中的哪一个表的方式

    mysql中查询一个字段具体是属于哪一个数据库的那一张表:用这条语句就能查询出来,其中 table_schema 是所在库, table_name 是所在表 --mysql中查询某一个字段名属于哪一个 ...

  2. php mysql 字段不为空_Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?...

    Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null? 先上两种实现方式的实例: $querys["house_type_image" ...

  3. MySQL中添加新字段

    © Ptw-cwl 要在MySQL中添加新字段,您可以使用ALTER TABLE语句. 以下是添加新字段的基本语法: ALTER TABLE table_name ADD column_name da ...

  4. mysql按某个条件升序_问题描述大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同):SELECT * FROM `MyTable` WHERE...

    问题描述 大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同): SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ...

  5. 如何在MySQL中实现替换字段部分内容

    相信小伙伴们在使用MySQL数据库的时候都会遇到不少难题吧,例如如何在MySQL中实现替换字段部分内容?想必难倒了不少人,为此,今日小编就为大家详细的介绍一下MySQL如何实现替换字段部分内容,由于内 ...

  6. 【整理】mysql中information_schema.tables字段说明

    [整理]mysql中information_schema.tables字段说明 2016-05-04 16:47:50|  分类: 默认分类|举报|字号 订阅 下载LOFTER 我的照片书  | 1. ...

  7. MySQL中索引与视图的用法与区别详解

    索引与视图是我们在日常使用mysql必不可少的一部分,最近在学习中看到一本书中关于这方法写的不错,所以这篇文章主要给大家介绍了关于MySQL中索引与视图的使用与区别的相关资料,需要的朋友可以参考借鉴, ...

  8. mysql中的where和having子句的区别

    mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句 ...

  9. mysql中Tinyint(1)和Tinyint(4)的区别

    在mysql中如果设置字段为Tinyint类型,补0为1的话,比如:Tinyint(1) 这个不管在数据库中保存1,2,3,4的时候.在java或者c#获取表的对象,转换成类对象的时候,会变成bool ...

  10. MySQL中char,varchar和text的区别

    MySQL中char,varchar和text的区别 java程序中的string类型,在mysql数据表中可以有三种对应的类型:char,varchar和text. char,varchar和tex ...

最新文章

  1. flowlayout java_【简答题】通过使用flowlayout设计出来 java程序如下图所示
  2. oracle 关系 表 视图_oracle动态视图v$,v_$,gv$,gv_$与x$之间的关系
  3. Test2 unit2
  4. css 单行文本溢出显示省略号
  5. htmlparser操作bean类提取html页面元素
  6. eclipse java8报错_eclipse4.3安装支持Java8插件,之后就报错无法打开eclipse,求解?
  7. Go语言web框架 gin
  8. 快速显示代码信息工具 Tokei
  9. 三角矩阵的逆矩阵怎么求_电子科技大学矩阵理论复习笔记 第六章 广义逆矩阵...
  10. 怎么去掉字符串最后一个逗号
  11. C# 传递给C++函数的结构体没有对齐的问题
  12. Java中如何使某个类的对象唯一性,只能创建一个对象
  13. excel复制后卡死的解决办法
  14. 机器学习——建筑能源得分预测
  15. 前端处理无网络兜底图片展示
  16. EFF称强行删除代码侵犯人权
  17. 全网最新正则表达式总结- 简单 便捷 (适用于新手学习正则表达式,老手巩固学习正则表达式)
  18. 6.2 龙格—库塔法
  19. L7 U2 希望与梦想
  20. Meta眼球追踪研究:采用事件相机,采样率可达kHz级

热门文章

  1. linux7端口聚合,centos7配置链路聚合
  2. 未结束的字符文字_PAT B1042:字符统计
  3. git上传分支的原理_几张图让你彻底弄懂git工作流(二) ——git分支
  4. 枚举算法称硬币C语言,【算法系列之枚举】称硬币
  5. c位边上还有什么位_c位是什么意思?C位说法的由来是什么?c位旁边二个位置叫什么?...
  6. 【LeetCode笔记】124. 二叉树中的最大路径和(Java、二叉树、DFS)
  7. simulink和c语言开发,Simulink之嵌入式C代码生成-应用层和底层的接口
  8. python turtle画房子详细解释_[宜配屋]听图阁
  9. mysql降级导入_mysql 升级和降级
  10. flutter字体不跟随系统_Flutter自定义字体无法加载