count(列名)、count(1)和 count(*)有什么区别?

这篇具有很好参考价值的文章主要介绍了count(列名)、count(1)和 count(*)有什么区别?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在MySQL中,这几个都是统计操作,很多人在使用的时候,都使用的是count(1),这有没有问题?使用正确?达到了统计效果?

我们从效果和效率两方面来分析下

执行效果

count(*) 包括了所有的列,在统计时不会忽略列值为null的数据
count(1) 用1表示代码行,在统计时不会忽略列值为null的数据
count(列名)在统计时,会忽略列值为空的数据,就是说某个字段的值为null时不统计

简单来说,count(*) 和count(1) 都统计null列,count(列名)不统计null列

执行效率

1、InnoDB引擎

count(字段) < count(1) = count(*)

InnoDB通过遍历最小的可用二级索引来处理select count(*) 语句,除非索引或优化器提示指示优化器使用不同的索引
如果二级索引不存在,则通过扫描聚簇索引来处理

2、MyISAM引擎

count(字段) < count(1) <= count(*)

  • MyISAM存储了数据的准确行数,使用 count(*)会直接读取该行数
  • 当第一列定义为NOT NULL时,count(1)和count(*)一样
  • count(列名) 会遍历整个表,但不同的是,它会先获取列,然后判断是否为空,然后累加,因此count(列名)性能不如前两者

总结文章来源地址https://www.toymoban.com/news/detail-434425.html

  • 优先使用count(*),这是SQL92 定义的标准统计行数的语法,跟数据库无关,与NULL也无关
  • 在InnoDB中,count(1) 等同于count(*),统计NULL的话,使用谁都OK
  • count(列名) 是统计列值数量,不计NULL,相同列值算一个
 

到了这里,关于count(列名)、count(1)和 count(*)有什么区别?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL统计函数count详解

    count() 是一个聚合函数,返回指定匹配条件的行数。开发中常用来统计表中数据,全部数据,不为null数据,或者去重数据。 1.函数说明 count(1):统计所有的记录(包括null)。 count(*):统计所有的记录(包括null)。 count(字段):统计该\\\"字段\\\"不为null的记录。 count(distinct 字段):

    2024年02月05日
    浏览(44)
  • 【MySQL系列】统计函数(count,sum,avg)详解

    💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃 个人主页 :阿然成长日记 👈点击可跳转 📆 个人专栏: 🔹数据结构与算法🔹C语言进阶 🚩 不能则学,不知则问,耻于问人,决无长进 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍 前言:前面已经学习

    2024年02月11日
    浏览(47)
  • Mysql 的HAVING子句中COUNT(a)的统计范围

        问题是这样的 :       1.对于a、b两个字段,需要按照a进行分组(Group by a),要返回分组后count(a)1的a和b两个字段,一条sql解决?       2.如果以及Group by a,b,多个字段 HAVING count(a)1是怎么统计count(a)的数据的?     在使用 GROUP BY 语句时, HAVING 子句中的 COUNT(

    2024年01月22日
    浏览(46)
  • 面试官:请说一下Mysql中count(1)、count(*)以及count(列)的区别?

    近期在Review项目代码时,发现同事们在查询MySQL行数时存在多样的方式,有的使用 COUNT(1) , 有的用 COUNT(id) , 还有人选择了 COUNT(*) 。这混杂的选择引发了我的思考。当然这三种count的方式也是众说纷纭,其中最大的分歧点就是 COUNT(*) 和 COUNT(1) 查询性能上,有人觉得 COUNT(*) 需要

    2024年02月19日
    浏览(39)
  • VR、AR、MR、XR到底都是什么?有什么区别

    英:Virtual Reality 中文翻译:虚拟现实 又称计算机模拟现实。是指由计算机生成3D内容,为用户提供视觉、听觉等感官来模拟现实,具有很强的“临场感”和“沉浸感”。我们可以使用耳机、控制器等虚拟现实设备,在环境中互动。虚拟现实技术囊括计算机、电子信息、仿真技

    2024年02月08日
    浏览(39)
  • javaweb、spring、springmvc和springboot有什么区别,都是做什么用的?

    首先不说Spring那一坨,咋们先来说说JavaWeb。看样子能刷到这个问题的都不是什么JavaWeb的熟手,但是至少Java基础是熟手吧?那么就仔细说说。 JavaWeb,顾名思义就是用Java来做Web程序。那啥又是Web程序呢?那顾名思义就是运行在Web上面的程序。 那Web程序是啥我就不用再解释了吧

    2024年02月03日
    浏览(54)
  • 【面试精讲】Java有哪些垃圾回收器?工作原理都是什么?它们有什么区别?

    【面试精讲】Java有哪些垃圾回收器?工作原理都是什么?它们有什么区别? 目录 本文导读 一、垃圾回收器概览 Serial GC工作原理概览 Parallel GC工作原理概览 CMS回收器工作原理概览 G1回收器工作原理概览 2、选择适合的垃圾回收器 二、串行垃圾回收器(Serial GC) 工作原理 工

    2024年04月16日
    浏览(37)
  • excel统计函数篇2之count系列

    1、 COUNT(value1,[value2],…) :计算参数列表中 数字 的个数 2、 COUNTA(value1,[value2],…) :计算参数列表中 值 的个数 联想在excel之数学函数、excel中的通配符一文中提到求和函数: SUMIF(range,ceriteria,[sum_range]):对范围内符合指定条件的值求和 sumif(条件范围,条件,求和范围) 求和范围在

    2024年02月12日
    浏览(34)
  • 4. count(*) 、count(1) 、count(字段) 区别

    哪种 count 性能最好? count(*) = count(1) count(字段) count( ) 是什么? count() 是一个聚合函数,函数的参数不仅可以是字段名,也可以是其他任意表达式,该函数作用是 统计符合查询条件的记录中,函数指定的参数不为 NULL 的记录有多少个 。 count(*)、 count(1) 都是检索表中所有记

    2024年02月11日
    浏览(38)
  • count(1)、count(*)和count(指定字段)之间的区别

    一、count(1)和count(*) 当表的数据量比较大,对表作分析之后,使用count(1)比使用count(*)用时多。 从执行计划看,count(1)和count(*)的效果是一样的。 但是在表做过分析之后,count(1)会比count()的用时少些。 如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。 因为count(*),自动

    2023年04月27日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包