当前位置: 首页 > article >正文

【MySQL】count(*)、count(1)和count(列名)区别

  • 问题:用count(*),count(1),count(列名)谁好呢?

其实,对于MyISAM引擎的表是没有区别的。这种引擎内部有一计数器在维护着行数。

Innodb引擎的表用count(*),count(1)直接读行数,复杂度是O(n),因为innodb真的要去数一遍。但好 于具体的count(列名)。

  • 问题:能不能使用count(列名)替换count(*)?

不要使用 count(列名)来替代 count(*) , count(*) 是 SQL92 定义的标准统计行数的语法,跟数 据库无关,跟 NULL 和非 NULL 无关。

说明:count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行。

  • COUNT(*)返回表中记录总数,适用于任意数据类型,当只需要知道表中总行数时,通常性能是最快的。
  • COUNT(列名) 返回列名不为空的记录总数。
  • COUNT(1)同样统计表中所有行的数量,不管这些行是否包含 NULL ,COUNT(1) 和 COUNT(*) 的性能基本相同,因为 1 是一个常量,不会影响结果。但在一些旧版本的 MySQL 中可能有微小的性能差异。现代 MySQL 中,COUNT(1) 和 COUNT(*) 的性能差异通常可以忽略不计。

http://www.kler.cn/a/503822.html

相关文章:

  • ESP32,uart安装驱动uart_driver_install函数剖析,以及intr_alloc_flags 参数的意义
  • STM32特殊功能引脚详解文章·STM32特殊功能引脚能当作GPIO使用嘛详解!!!
  • stb_image简单使用
  • Spring bean的生命周期和扩展
  • Linux创建server服务器实现多方信息收发
  • 工厂人员定位管理系统方案(二)人员精确定位系统架构设计,适用于工厂智能管理
  • JAVA:利用 RabbitMQ 死信队列实现支付超时场景的技术指南
  • 第424场周赛:使数组元素等于零、零数组变换 Ⅰ、零数组变换 Ⅱ、最小化相邻元素的最大差值
  • OJ题目下篇
  • AI赋能下的美颜API与滤镜SDK:从传统到深度学习的进化之路
  • 深入理解 Python 的装饰器
  • Elasticsearch ES|QL 地理空间索引加入纽约犯罪地图
  • 计算机的错误计算(二百一十一)
  • 交互数字人:革新沟通的未来
  • Java Agent(三)、ASM 操作字节码入门
  • 【机器学习】神经网络训练技巧
  • 使用VSCode搭建Ruby on Rails集成开发环境
  • mac intel芯片下载安卓模拟器
  • 【css】浏览器强制设置元素状态(hover|focus……)
  • rclone,云存储备份和迁移的瑞士军刀,千字常文解析,附下载链接和安装操作步骤...
  • MAC AndroidStudio模拟器无网络
  • 新版懒人精灵基础老狼孩插件经典例子板块-视频教程
  • C# 内存篇
  • 《零基础Go语言算法实战》【题目 4-1】返回数组中所有元素的总和
  • 蓝牙BT04-A的使用与相关AT指令
  • AI大模型开发—1、百度的千帆大模型调用(文心一言的底层模型,ENRIE等系列)、API文档目的地