【转载】MySQL count(*) count(1) count(column)区别
MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高
InnoDB 引擎执行 count(*) 的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数
count函数
count(主键 id) ,InnoDB 引擎会遍历整张表,把每一行的 id 值都取出来,返回给 server 层。server 层拿到 id 后,判断是不可能为空的,就按行累加
count(1) ,InnoDB 引擎遍历整张表,但不取值。server 层对于返回的每一行,放一个数字“1”进去,判断是不可能为空的,按行累加。
count(字段)
1)如果这个“字段”是定义为 not null 的话,一行行地从记录里面读出这个字段,判断不能为 null,按行累加;
2)如果这个“字段”定义允许为 null,那么执行的时候,判断到有可能是 null,还要把值取出来再判断一下,不是 null 才累加。
count(*) 并不会把全部字段取出来,而是专门做了优化,不取值,按行累加。
注:
count(※) 遍历哪个索引树得到的结果逻辑上都是一样的count(※) 这样的操作,遍历哪个索引树得到的结果逻辑上都是一样的MySQL 优化器会找到最小的那棵树来遍历。在保证逻辑正确的前提下,尽量减少扫描的数据量,是数据库系统设计的通用法则之一
按照效率排序的话,count(字段)<count(主键 id)<count(1)≈count(*),所
以尽量使用 count(*)
原文链接:https://blog.csdn.net/ljjzj/article/details/89341640
【转载】MySQL count(*) count(1) count(column)区别的更多相关文章
- 【mysql】count(*),count(1)与count(column)区别
		https://blog.csdn.net/lzm18064126848/article/details/50491956 count(*)对行的数目进行计算,包含NULL count(column) ... 
- mysql中的count(primary_key)、count(1)、count(*)的区别
		表结构如下: mysql> show create table user\G; *************************** 1. row ********************** ... 
- mysql SELECT FOUND_ROWS()与COUNT(*)用法区别
		在mysql中 FOUND_ROWS()与COUNT(*)都可以统计记录,如果都一样为什么会有两个这样的函数呢,下面我来介绍SELECT FOUND_ROWS()与COUNT(*)用法区别 SEL ... 
- MySQL查询count(*)、count(1)、count(field)的区别收集
		经过查询研究得出这个和MySQL中用什么引擎有关,比如InnoDB和MyISAM在处理这count(*).count(1).count(field)都有不同的方式,还有就是和版本都有关系,不同的版本会 ... 
- MySQL学习笔记:count(1)、count(*)、count(字段)的区别
		关于数据库中行数统计,无论是MySQL还是Oracle,都有一个函数可以使用,那就是COUNT. 但是,就是这个常用的COUNT函数,却暗藏着很多玄机,尤其是在面试的时候,一不小心就会被虐.不信的话请 ... 
- Count(1),Count(*),Count(column)区别
		count是一种最简单的聚合函数,一般也是我们第一个开始学习的聚合函数,那么他们之间究竟由什么区别呢? 有的人说count(1)和count(*)他们之间有区别,而有的人说他们之间没有区别那么他们之间 ... 
- count(*)、count(1)、count(column)的区别
		count(*)对行的数目进行计算,包含NULL count(column)对特定的列的值具有的行数进行计算,不包含NULL值. count()还有一种使用方式,count(1)这个用法和count( ... 
- 【转载】Oracle 中count(1) 、count(*) 和count(列名) 函数的区别
		1)count(1)与count(*)比较: 1.如果你的数据表没有主键,那么count(1)比count(*)快2.如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快3. ... 
- mysql技巧之select count的比较
		在工作过程中,时不时会有开发咨询几种select count()的区别,我总会告诉他们使用select count(*) 就好.下文我会展示几种sql的执行计划来说明为啥是这样. 1.测试 ... 
- 【MySQL】技巧 之 count(*)、count(1)、count(col)
		只看结果的话,Select Count(*) 和 Select Count(1) 两着返回结果是一样的. 假如表沒有主键(Primary key), 那么count(1)比count(*)快,如果有主 ... 
随机推荐
- 牛客网NOIP赛前集训营-提高组(第七场)A-中国式家长 2
			题目描述 有一天,牛牛找到了一个叫<中国式家长>的游戏,游戏中需要靠"挖脑洞"来提升悟性. 挖脑洞在一个\(N\)行\(M\)列的地图上进行,一开始牛牛有\(K\)点行 ... 
- Java对象流与序列化学习
			对象流与序列化 对象流有两个类 ObjectOutputStream:将java对象的基本数据类型和图形写入OutputStream ObjectInputStream:对以前使用ObjectOutp ... 
- Python 的 zip 和 dict 组合 生成新字典
			>>> d = dict(zip(['a', 'b'], [1, 2]))>>> d{'a': 1, 'b': 2}>>> d = dict(zi ... 
- python之 matplotlib模块之绘制堆叠柱状图
			我们先来看一个结果图 看到这个图,我个人的思路是 1 设置标题 import numpy as np import matplotlib.pyplot as plt plt.title('Scores ... 
- js 自定义map
			<script> function HashMap(){this.map = {};} HashMap.prototype = { put : function(key, value){ ... 
- python每日练习10题
			161.求1000以内的所有的素数以及闰年的数之和 第一步:求1000以内的素数,素数:只能被1和本身整除的数叫素数 import math def is_prime(num): if num ==1 ... 
- 牛客多校训练营第九场 J - Symmetrical Painting (排序)
			J - Symmetrical Painting 题意 给你\(n\)个矩形, 左下角\((i-1,\ L_i)\), 右上角\((i,\ R_i)\), 找一条线\(l\)平行于\(x\)轴, 让这 ... 
- 【Elasticsearch】Elasticsearch索引的创建、查看及修改
			转: 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/liuxiao723846/art ... 
- Python基础教程(017)--执行Python的方式解释器运行及其他几种解释器简介
			前言 了解Python的解释器 内容 Python的解释器乳交有多个语言的实现 cPython---官方版本的C语言实现 Jython--可以运行在java平台 IronPython--可以运行在.n ... 
- 求1+2+3.。。。n的和
			思路: 利用递归累加,逻辑运算符的短路运算. class Solution { public: int Sum_Solution(int n) { int result=n; result & ... 
