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

count(1)、count(*)、count(主键)、count(字段)区别

按照性能排序

count(1)=count(*)>count(主键)>count(字段)

count:统计符合查询的条件记录中,函数指定的参数不为NULL的记录有多少个

比如:select count(age) from user

统计user表中age不为NULL的记录有多少条

count的计算过程

通过count函数来统计有多少条记录的时候,Mysql的server层会维护一个count的变量,来记录具体的记录数

如下case

// id 是主键索引

select count(id) from user

如果表里没有其他二级索引,则innodb会遍历主键索引ID,来统计记录数

如果有其他二级索引,则innodb会遍历二级索引来统计记录数,是因为同样的二级索引记录比主键索引记录占用的空间更小,所以二级索引树比主键索引树更小,在遍历二级索引的IO成本比主键的IO成本要低(任何一个二级索引都会包含主键的字段)

count(*)在执行的时候,mysql会转换成参数*转换成0来处理,所以count(*)和count(1)性能是一样的

count(字段):非索引字段计算count的时候,会扫描全表

性能优化

第一种:非具体值,只需要近似值

使用explain或者show tabel  status

第二种:使用额外表来记录总数


http://www.kler.cn/news/368327.html

相关文章:

  • #【2024年10月26日更新】植物大战僵尸杂交本V2.6更新内容与下载
  • 智能工厂的软件设计 专有名词(juncture/relation/selection):意识形态及认知计算机科学的架构、系统和运用
  • 论文笔记(五十一)Challenges for Monocular 6-D Object Pose Estimation in Robotics
  • python 使用 企微机器人发送消息
  • 三国杀钓鱼自动化
  • TPLCM柔性屏自动化贴合应用
  • openlayers 封装加载本地geojson数据 - vue3
  • git stash和git stash pop
  • Linux之nginx离线安装
  • 图文详解ChatGPT-o1完成论文写作的全流程
  • android openGL ES详解——缓冲区VBO/VAO/EBO/FBO/离屏渲染
  • 使用Node.js和Express构建RESTful API
  • 机器学习介绍
  • QT 信号重载时的处理方法
  • jmeter自定义函数
  • 浅谈网络 | 通信协议
  • Leetcode刷题笔记13
  • 16天自制CppServer-day05
  • apply,call,bind手写
  • 关于Docker的docker engine stopped问题解决
  • Lesson11---stack
  • fileinclude
  • 【计算机网络 - 基础问题】每日 3 题(五十五)
  • Discuz 论坛开发一套传奇发布站与传奇开服表
  • Python中的递归函数是如何工作的,它有哪些应用场景?
  • JAVA高性能缓存项目