首页 > 数据库 >MySQL下count(*)、count(1)和count(字段)的查询效率比较

MySQL下count(*)、count(1)和count(字段)的查询效率比较

时间:2024-01-02 10:34:42浏览次数:56  
标签:count COUNT 数据表 查询 索引 MySQL 主键 统计

InnoDB存储引擎

COUNT(*)COUNT(1)都是对所有结果进行计算。如果有WHERE子句,则是对所有符合筛选条件的数据行进行统计;如果没有WHERE子句,则是对数据表的数据行数进行统计。

因为COUNT(*)COUNT(1)本质上没有区别,执行的复杂度都是O(N),也就是采用全表扫描,进行循环+计数的方式进行统计。

如果采用COUNT(*)COUNT(1)统计数据行数,尽量采用二级索引。因为主键采用的索引是聚簇索引,聚簇索引包含的信息多,明显会大于二级索引(非聚簇索引)。这两种统计方式不需要查找具体的行,只是统计行数,系统会自动采用占用空间更小的二级索引来进行统计。

如果要查找具体的行,采用主键索引的效率更高。

如果有多个二级索引,会使用key_len小的二级索引进行扫描。当没有二级索引的时候,才会采用主键索引来进行统计。

一般情况下三者执行效率:COUNT(*) = COUNT(1) > COUNT(字段),我们尽量使用COUNT(*)

MyISAM引擎

每张数据表都有一个meta信息存储row_count值,所以统计数据表的行数只需要O(1)的时间复杂度。

标签:count,COUNT,数据表,查询,索引,MySQL,主键,统计
From: https://blog.51cto.com/u_15812995/9063893

相关文章

  • 安防LiteCVR监控视频云平台支持按时间查询告警列表消息
    随着人们对安全监控的需求不断提高,传统的监控设备已经无法满足人们的需求。因此,高清监控设备的出现成为了行业发展的必然趋势。高清监控设备不仅可以提供更清晰的画面,还可以提供更准确的监控信息。这也使得高清监控设备在安防监控领域的应用越来越广泛。 LiteCVR视频平台基于云......
  • MySQL yum安装常见报错
    yum安装MySQL报公钥尚未安装解决方案1:将yum文件里的mysql-community.repo,编辑,gpgcheck=0解决方案二:更新RPM-GPG-KEY-mysql文件......
  • 问题记录:MySQL查询第一次后获得结果后,再进行多次查询发现返回结果不变,执行到dao层不再
    问题描述:查询MySQL数据库实时更新的数据,查询第一次后获得结果后,再进行多次查询发现返回结果不变,执行到dao层不再执行sql,问题原因是mapper文件中开启了二级缓存,获取一次结果后再次调用查询时直接从缓存中取,导致返回结果不能实时更新直接放结论,是mybatis中的二级缓存问题二级缓......
  • Riak 的查询和索引: 如何实现高效的数据查询
    1.背景介绍Riak是一个分布式、可扩展的NoSQL数据库系统,它采用了分布式哈希表(DHT)技术来实现高性能和高可用性。Riak的查询和索引功能是其核心特性之一,它允许用户在大量数据中高效地查询和检索信息。在本文中,我们将深入探讨Riak的查询和索引功能,揭示其核心概念、算法原理和实际......
  • 如何在MySQL中对键值对表中的重复行进行多列排序?
    要在MySQL中对键值对表中的重复行进行多列排序,可以使用ORDERBY子句并指定多个列作为排序条件。以下是一个示例:假设有一个键值对表key_value,包含以下列:key_id、key_name、value。要对key_value表中的重复行按key_id和value进行排序,可以使用如下的SQL查询语句:SELECTkey_id,key_nam......
  • 使用 MYSQL 对列中特定范围的数字求和
    使用MySQL对列中特定范围的数字求和,可以使用SQL的SUM()函数结合WHERE子句来实现。以下是一个示例:SELECTSUM(column_name)ASsum_resultFROMtable_nameWHEREcolumn_name>=start_valueANDcolumn_name<=end_value;在上述代码中,将column_name替换为要计算求......
  • mysql导入导出sql文件
    MySQL新版本无法使用-p密码形式,可以在my.cnf中设置账号密码导出备份命令如下:mysqldump--defaults-extra-file=/etc/my.cnf数据库名>database.sql一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):1、导出数据和表结构:mysqldump-u用户名-p数据库名[表名......
  • 基于SSM的四六级报名与成绩查询系统
    互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对四六级报名信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用四六级报名与成绩查询系统可以有效管理,使信......
  • [ABC212H] Nim Counting
    题目链接题目本质就是对一个多项式\(F\)进行等比数列求和得到\(G\)(\(F_i\)表示\(i\)在序列\(A\)中的出现次数),求\(G\)所有下标\(>0\)的位置的权值和。显然,\(M\)固定就可以直接做了。但\(M\)不固定,所以我们只能暴力枚举\(M\)并进行\(N\)次FWT卷积。复杂度显......
  • DNS查询的两种方式:递归查询和迭代查询
    1、递归解析 当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两种方式,如图所示的是递归方式。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给......