mysql中count(*),count(字段),count(1)的区别
count(主键id)
InnoDB 会遍历全表,取每行的主键 id,返回给 server 层,server 层拿到数据后,进行判断累加。
count(1)
InnoDB 仍遍历全表,但是不取值,server 层对返回的每一行数据新增一个 1,然后进行判断累加;
因此,count(1)要更快些,因为无需取值。从引擎返回 id 会涉及到解析数据行,以及拷贝字段值的操作。
count(字段):
- 如果这个“字段”是定义为 NOT NULL 的话,一行行地从记录里面读出这个字段,判断不能为 NULL ,按行累加;
- 如果这个“字段”定义允许为 NULL,那么执行的时候,判断到有可能是 NULL,还要把值取出来再判断一下,不是 NULL 才累加。
count(*)
并不会把全部字段取出来,而是专门做了优化,不取值。count(*)肯定不是 NULL,按行累加。
结论:按照效率排序的话,count(字段)<count(主键
id)<count(1)≈count(),所以我建议你,尽量使用count()。
引用:https://www.jianshu.com/p/e1229342a5e2
mysql中count(*),count(字段),count(1)的区别相关推荐
- mysql中查询一个字段属于哪一个数据库中的哪一个表的方式
mysql中查询一个字段具体是属于哪一个数据库的那一张表:用这条语句就能查询出来,其中 table_schema 是所在库, table_name 是所在表 --mysql中查询某一个字段名属于哪一个 ...
- php mysql 字段不为空_Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?...
Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null? 先上两种实现方式的实例: $querys["house_type_image" ...
- MySQL中添加新字段
© Ptw-cwl 要在MySQL中添加新字段,您可以使用ALTER TABLE语句. 以下是添加新字段的基本语法: ALTER TABLE table_name ADD column_name da ...
- mysql按某个条件升序_问题描述大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同):SELECT * FROM `MyTable` WHERE...
问题描述 大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同): SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ...
- 如何在MySQL中实现替换字段部分内容
相信小伙伴们在使用MySQL数据库的时候都会遇到不少难题吧,例如如何在MySQL中实现替换字段部分内容?想必难倒了不少人,为此,今日小编就为大家详细的介绍一下MySQL如何实现替换字段部分内容,由于内 ...
- 【整理】mysql中information_schema.tables字段说明
[整理]mysql中information_schema.tables字段说明 2016-05-04 16:47:50| 分类: 默认分类|举报|字号 订阅 下载LOFTER 我的照片书 | 1. ...
- MySQL中索引与视图的用法与区别详解
索引与视图是我们在日常使用mysql必不可少的一部分,最近在学习中看到一本书中关于这方法写的不错,所以这篇文章主要给大家介绍了关于MySQL中索引与视图的使用与区别的相关资料,需要的朋友可以参考借鉴, ...
- mysql中的where和having子句的区别
mysql中的where和having子句的区别 having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句 ...
- mysql中Tinyint(1)和Tinyint(4)的区别
在mysql中如果设置字段为Tinyint类型,补0为1的话,比如:Tinyint(1) 这个不管在数据库中保存1,2,3,4的时候.在java或者c#获取表的对象,转换成类对象的时候,会变成bool ...
- MySQL中char,varchar和text的区别
MySQL中char,varchar和text的区别 java程序中的string类型,在mysql数据表中可以有三种对应的类型:char,varchar和text. char,varchar和tex ...
最新文章
- flowlayout java_【简答题】通过使用flowlayout设计出来 java程序如下图所示
- oracle 关系 表 视图_oracle动态视图v$,v_$,gv$,gv_$与x$之间的关系
- Test2 unit2
- css 单行文本溢出显示省略号
- htmlparser操作bean类提取html页面元素
- eclipse java8报错_eclipse4.3安装支持Java8插件,之后就报错无法打开eclipse,求解?
- Go语言web框架 gin
- 快速显示代码信息工具 Tokei
- 三角矩阵的逆矩阵怎么求_电子科技大学矩阵理论复习笔记 第六章 广义逆矩阵...
- 怎么去掉字符串最后一个逗号
- C# 传递给C++函数的结构体没有对齐的问题
- Java中如何使某个类的对象唯一性,只能创建一个对象
- excel复制后卡死的解决办法
- 机器学习——建筑能源得分预测
- 前端处理无网络兜底图片展示
- EFF称强行删除代码侵犯人权
- 全网最新正则表达式总结- 简单 便捷 (适用于新手学习正则表达式,老手巩固学习正则表达式)
- 6.2 龙格—库塔法
- L7 U2 希望与梦想
- Meta眼球追踪研究:采用事件相机,采样率可达kHz级
热门文章
- linux7端口聚合,centos7配置链路聚合
- 未结束的字符文字_PAT B1042:字符统计
- git上传分支的原理_几张图让你彻底弄懂git工作流(二) ——git分支
- 枚举算法称硬币C语言,【算法系列之枚举】称硬币
- c位边上还有什么位_c位是什么意思?C位说法的由来是什么?c位旁边二个位置叫什么?...
- 【LeetCode笔记】124. 二叉树中的最大路径和(Java、二叉树、DFS)
- simulink和c语言开发,Simulink之嵌入式C代码生成-应用层和底层的接口
- python turtle画房子详细解释_[宜配屋]听图阁
- mysql降级导入_mysql 升级和降级
- flutter字体不跟随系统_Flutter自定义字体无法加载