1. 系统版本

MySQL 5.7.25,Ubuntu 16.04

2. count()函数

2.1 count(*)

count(*)用于计算数据表的行数。

2.1.1 MyISAM实现方式

MyISAM将数据表的总行数存储在磁盘,当有sql语句调用count(*)时,MyISAM能直接返回表的总行数。但是,当sql语句有WHERE
语句限制查询行数时,MyISAM要重新算符合WHERE语句的数据表的行数,并不能直接返回行数。

2.1.2 InnoDB实现方式

InnoDB的隔离级别是可重复读,支持MVCC,其数据表的行数无法预先确定,只能通过执行查询的时候才能确定当时的行数,故InnoDB无法预先存储数据表的行数。对于每个count(*),InnoDB需要重新计算数据表的行数。
与此同时,MySQL对count(*)进行了优化。

2.2 count(1)、count(主键)以及count(column)的区别

本节仅针对InnoDB引擎的情况下开展。

2.2.1 count(1)

InnoDB会遍历整张表,但不获取具体的值,server层每获取一行,判断不为空的,就+1。可等价为返回数据表总行数。

2.2.2 count(主键)

InnoDB会遍历整张表,并获取每一行的主键,server层每获取一个主键,判断不为空,就+1。可等价为返回数据表总行数。

2.2.3 count(column)

该形式下的函数返回该字段不为null的行数。
InnoDB会判断字段定义是否为not null:
若为not null,则遍历整张表,获取每一行所对应的字段值,返回给server层,server层进行累加,每次累加值为1;
若字段可以为空,则依次取出每一行对应的字段后,server层需要额外判断取出的值是否为空,若不为空,则+1。

3. 执行效率

使用InnoDB的前提下,执行效率如下:
count(*)≈count(1)>count(主键)>count(1)

MySQL InnoDB count()函数相关推荐

  1. mysql数据库中count的作用_详解 MySQL中count函数的正确使用方法

    1. 描述 在MySQL中,当我们需要获取某张表中的总行数时,一般会选择使用下面的语句 select count(*) from table; 其实count函数中除了*还可以放其他参数,比如常数.主 ...

  2. mysql的count函数类型是什么意思_详细解读MySQL中COUNT函数的用法

    MySQL的COUNT函数是最简单的功能,非常有用的计算,预计由一个SELECT语句返回的记录数. 要了解COUNT函数考虑的EMPLOYEE_TBL的的表具有以下记录: mysql> SELE ...

  3. mysql的count函数类型是什么意思_MySQL中的COUNT函数,你理解多少

    前言:COUNT函数相比大家都不陌生,接触过数据库的兄弟们想必都用过,但是,就是这个常用的COUNT函数,却暗含许多玄机. 1.COUNT简介 看看官网对COUNT的简介 大致意思是:COUNT(ex ...

  4. mysql的count()函数如何选择索引,千万级表的count()查询优化实例

    文章目录 一.前言 1.网上的主要两种说法 2.不贴出mysql版本的测试都是耍流氓~ 3.mysql的count(*)和count(1) 二.测试索引长度和索引基数对count(*)查询的影响 1. ...

  5. mysql的count函数统计错误问题

    使用mysql的时候需要用到count函数,但是发现count函数总是统计不正确.通过查询资料发现,count('任意内容')都会统计出所有记录数,因为count只有在遇见null时不计数,即coun ...

  6. pg数据库与MySQL的count函数_postgresql数据库连接数和状态查询操作

    查看数据库的当前连接数和状态的几种方式: 只是能看出数据库服务是否正在运行和启动路径 pg_ctl status 统计当前postgresql相关进程数,在大体上可以估算数据库的连接数,非精准,但是目 ...

  7. mysql的count函数可以加表达式嘛_power bi15——power pivot的DAX表达式

    power pivot的DAX表达式内容包括2部分: power pivot的DAX表达式概述 power pivot的DAX表达式练习 问题: 用数据透视表求出每名销售人员手中高赢单率低风险商机金额 ...

  8. MySQL中count是什么函数_MySQL中

    本篇文章给大家带来的内容是关于mysql大表中count()的用法以及mysql中count()的优化,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助.一个单表中包含有6000w+的数据 ...

  9. mysql count函数加条件总结

    文章目录 前言 测试环境 准备工作 条件统计 总结 前言 最近发现在处理Mysql问题时,count()函数频繁上镜,常常出现在分组统计的情景下,但是有时候并不是使用group by分好组就可以直接统 ...

最新文章

  1. linux进程中对信号的屏蔽,linux进程中的信号屏蔽
  2. 部署LAMP-WordPress站点上线
  3. Ubuntu 12.04 如何切换回英文
  4. android项目打包成apk
  5. 消除代码中的坏味道,编写高质量代码
  6. Seek the Name, Seek the Fame POJ - 2752 (理解KMP函数的失配)既是S的前缀又是S的后缀的子串
  7. c# 读hex_在C#中将string转换为hexstring
  8. mysql Slave is not configured or failed to initialize properly. You must at least set --server-id
  9. PowerDesigner导出Report通用报表
  10. avue下拉框中属性可以显示,但不能选中
  11. LeetCode:砖墙【554】
  12. (89)Verilog HDL系统函数和任务:$fwrite
  13. 收回扣、打麻将、开赌场?比亚迪自曝多名员工贪污腐败
  14. Confluence 6 访问日志脚本
  15. python 在Excel中新增一列
  16. mac修改国内镜像源
  17. matlab ode45 二阶微分方程,ode45解二阶微分方程
  18. MVC 原理和框架图
  19. java-贪吃蛇小游戏
  20. 境内股指期货品种、合约类型和周期规律简介

热门文章

  1. .NET 指南:使用可变数量的参数的成员
  2. Python爬虫_BeauifulSoup
  3. js 控制 Windows Media Player
  4. 学成在线案例——黑马程序员pink老师\思路讲解\完整源代码
  5. LeetCode--26. 删除排序数组中的重复项(双指针,暴力)
  6. Vue (响应式原理-模拟-1-vue)
  7. 7-20 打印九九口诀表 (15 分)
  8. php 解析 标记,如何使用PHP-simple-HTML DOM解析器获取标记的属性
  9. 基于Java的账号、密码登陆页面及验证
  10. php 价格计算方法,PHP算法逻辑:如何计算购买量?