mysql中count(*)和count(1)和count(column)区别

在日常的mysql使用中,我们经常会看到SELECT COUNT(*)、SELECT COUNT(1)等查询语句,他们到底有什么区别呢?今天我就来总结下。
我们先从函数的含义说起:

  1. count() 统计满足查询条件的结果集的总行数(包含null),其中count(1)和count()的处理逻辑完全相同
  2. count(column) 如果列定义时不允许为null,那么统计满足查询条件的不为null的总行数

由于innodb不能像MyISAM那样记录表的总行数,所以为了方便统计行数,MySQL 5.7.18后innodb对count(*)进行了优化:
原则:
基于占用空间最小的索引进行统计(减少磁盘IO),如果where条件能够确定合适的辅助索引,就通过辅助索引进行数据统计。
操作:
1.如果只有聚簇索引,那么直接通过聚簇索引统计总行数。
2.因为一般情况下二级索引占用空间比聚簇索引小,所以如果存在二级索引,一般会寻找占用空间最小的二级索引进行统计。

最后说下性能:
count(*) = count(1) > count(column)
mysql文档中提到了count()和count(1)两者的统计方式完全相同,不存在任何性能差异(InnoDB handles SELECT COUNT() and SELECT COUNT(1) operations in the same way. There is no performance difference.),count(column) 会慢些,因为还需要判断列是否为null。

reference:
mysql官方文档:mysql count说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一天笔记

编程语言分类: 1. 机器语言:用二进制指令编程,本质是直接操作硬件。 优点:执行效率高 缺点:开发效率低,学习难度高 2.汇编语言:用英文标签代替二进制指令,本质也是直接操作硬件。…

索尼MOTO等压榨国内代工厂:员工宿舍像监狱

摘要:据调查报告披露,伟易达血汗工厂的压榨情况比起富士康、苹果等有过之而无不及,包括强迫工人超负荷工作、暴露于有害化学物质、住宿环境差、虐待员工、超低的工资等。如前面保罗克鲁格曼发表了《表扬廉价劳动》一文,N.D.克里斯…

[cerc2012][Gym100624B]20181013

转载于:https://www.cnblogs.com/KonjakJuruo/p/9809637.html

Nginx服务器证书部署-亚洲诚信

Nginx服务器证书部署发布时间:2018-01-17 16:15:25依赖建议l SSL卸载驱动。建议:openssl版本1.1.0f。l nginx版本Stable version:最新稳定版,生产环境上建议使用的版本。获取证书MPKI方式:1. 登录https://mpki.tru…

java transient关键字

transient是用在序列化中的。当我们序列化的过程中,如果我们不想序列化某个字段,那么我们就可以使用这个关键字,jvm就会在序列化的时候自动忽略这个字段的数值。 transient主要有两个用途: 1.保证数据的安全。在进行序列化时&…

UDDI

见:https://baike.baidu.com/item/UDDI/2901586?fraladdin UDDI 是一种目录服务,企业可以使用它对 Web services 进行注册和搜索。UDDI,英文为 "Universal Description, Discovery and Integration",可译为“通用描述、…

腾讯手机管家筹划“出海”

摘要:正筹划推进旗下手机安全产品出海揽客。6月22日,腾讯无线安全产品部副总经理胡振东在上海表示,腾讯手机管家已推出了安卓国际版,下决心进军国际市场。 腾讯(00700.HK)正筹划推进旗下手机安全产品出海揽客。6月22日&#xff0c…

用反卷积(Deconvnet)可视化理解卷积神经网络还有使用tensorboard

『cs231n』卷积神经网络的可视化与进一步理解 深度学习小白——卷积神经网络可视化(二) TensorBoard--TensorFlow可视化 原文地址:http://blog.csdn.net/hjimce/article/details/50544370 作者:hjimce 一、相关理论 本篇博文主要讲…

java线程实现及线程池的使用

Java线程实现 线程把处理器的调度和资源分配分开,是cpu的最小调度单位。多个线程可以共享进程的内存资源,又可以独立调度。java线程关键方法都是通过高效的本地方法实现的。Java线程的主要实现方式有三种:内核实现、用户实现、内核用户混合实…

SOAP:简单对象访问协议

见:https://baike.baidu.com/item/%E7%AE%80%E5%8D%95%E5%AF%B9%E8%B1%A1%E8%AE%BF%E9%97%AE%E5%8D%8F%E8%AE%AE/3841505?fraladdin&fromid4684413&fromtitleSOAP 简单对象访问协议 SOAP(简单对象访问协议)一般指简单对象访问协议 …

程序调试

对拍 $ Windows $ 下的对拍程序 借助 \(Windows\) 脚本echo off :loop r.exe > input.in coronas.exe <input.in > output.a std.exe <input.in > output.b fc output.a output.b if not errorlevel 1 goto loop 一直没有找到怎样能控制对拍次数,今天终于醒悟,可…

不怕烧钱怕翻车:雷军与马化腾现场“过招”

说起微信&#xff0c;很多时尚潮人都很熟悉。这款软件可以发送语音信息、可以在有无线网络的地方免费发送、甚至只需摇一摇就能找到在你附近的用户&#xff0c;这些方便、时尚、新颖的元素使微信受到了很多用户的喜爱&#xff0c;也夺得了大量的市场。其实&#xff0c;在微信发…

php基础(一)

1、header(contentType:text/html,charset:utf-8)设置编码 2、查找字符串最后一次出现的 strrpos() 查找字符第一次出现的 strpos 3、array_sum() 返回数组值得和 4、func_num_args() 求函数参数的个数 5、func_get_args() 获取函数的所有参数 6、匿名函数 例子 $anonymityfun…

Thread.yield()和Thread.sleep(0)

关于Thread.yield()和Thread.sleep(0)的语义问题真是一个让人挠头的问题&#xff0c;翻了好多资料&#xff0c;在java6语言规范中看到了一段这样的描述&#xff1a; 重点在红框中&#xff0c;简而言之就是&#xff1a;sleep(0)和yield()的实现不需要任何可见的效果。那么在实现…

OOA:面向对象

见&#xff1a;https://baike.baidu.com/item/OOA/3659916?fraladdin OOA:面向对象&#xff1a; Object-Oriented Analysis&#xff08;面向对象分析方法&#xff09;是确定需求或者业务的角度&#xff0c;按照面向对象的思想来分析业务。例如&#xff1a;OOA只是对需求中描述…

DCT原型 ——傅里叶级数

傅里叶级数 法国数学家傅里叶发现&#xff0c;任何周期函数都可以用正弦函数和余弦函数构成的无穷级数来表示&#xff08;选择正弦函数与余弦函数作为基函数是因为它们是正交的&#xff09;&#xff0c;后世称为傅里叶级数&#xff08;法语&#xff1a;srie de Fourier&#xf…

c 递归算法

#include <stdio.h>double factorial(unsigned int i) {if(i < 1){return 1;}return i * factorial(i - 1); } int main() {int i 15;printf("%d 的阶乘为 %f\n", i, factorial(i));return 0; } 转载于:https://www.cnblogs.com/sea-stream/p/9822437.htm…

红黑树和B+树

&#xff08;一&#xff09;红黑树 红黑树是一种自平衡二叉查找树&#xff0c;也被称为"对称二叉B树"&#xff0c;它可以在O(logn)时间内利用 O(logn)的空间来完成查找、插入、删除操作。红黑树的读操作与普通二叉查找树相同&#xff0c;而插入和删除操作可能会破坏…

策略模式、观察者模式、代理模式、装饰模式 应用场景和实现

有个大神写的很好&#xff1a; 参考&#xff1a;设计模式学习笔记&#xff08;四&#xff1a;策略模式&#xff09; 参考&#xff1a;设计模式学习笔记&#xff08;二&#xff1a;观察者模式&#xff09; 参考&#xff1a;设计模式学习笔记-代理模式 参考&#xff1a;设计模式-…

DQL、DML、DDL、DCL的概念与区别

http://blog.csdn.net/tomatofly/article/details/5949070 SQL语言的分类 SQL语言共分为四大类&#xff1a;数据查询语言DQL&#xff08;Data Query Language&#xff09;&#xff0c;数据操纵语言DML&#xff0c;数据定义语言DDL(Data Definition Language)&#xff0c;数据…