MySQL的count(*)性能怎么样

MySQL的count(*)性能怎么样,第1张

对于count(主键id)来说, innodb引擎会遍历整张表,把每一行的id值都取出来,返回给server层,server层判断id值不为空,就按行累加

对于count(1)来说 ,innodb引擎遍历整张表,但不取值,返回给server层,server对于返回的每一行,放一个数字1进去,判断是不可能为空的,就按行累加

对于count(字段)来说,

如果这个字段定义为not null,一行行的从记录里面读出这个字段,判断不为空,则累加值

如果这个字段定义允许为null,那么执行的时候,判断到有可能为null,还要把值取出来在判断一下,不是null才累加

但是count()是例外

并不会把全部字段取出来,而是专门做了优化,不取值,count()肯定不是null,按行累加

所以这几个按照效率排序的话,count(字段)<count(主键id)<count(1)≈count()

所以,尽量使用count()

select count(1) from user跟select count() from user效率基本是一样的。

我觉得可以加一个统计信息的表,把主题数,帖子数等数据放到这个表里,但是这样就会牺牲一些写的效率,因为每次发帖删贴都要更新这个表。但是如果写的时候 *** 作数据一般不会太多,这个应该可以接受。

另外一个建议就是搞一个线程每隔多少时间来统计一下主题数,帖子数等数据,这样的数据就不是实时的了,但是那么大的数据量的时候这些数据的也么比较那么实时更新。

PS;bluedn,大数据量 *** 作的sql语句尽量不要使用sql的函数,尽量取了数据之后通过程序来处理得到想要的结果。

Count是用来统计数据个数的,跟SUM区别如下:

一、指代不同

1、Count:用来统计数据库中某一列数据的个数。

2、SUM:用来汇总数据库中某一列数据的合计值。

二、语法不同

1、Count:SQLCOUNT(column_name)语法,SELECTCOUNT(column_name)FROMtable_name。

2、SUM:SQLSUM()语法,SELECTSUM(column_name)FROMtable_name。

三、适用条件不同

1、Count:适用于ORACLE和MicrosoftSQLServer,但是无法用于MicrosoftAess。

2、SUM:适用于通用数据库。

参考资料来源:百度百科-COUNT函数

参考资料来源:百度百科-SUM函数

count 是用于统计查询结果的个数,属于聚合函数。

可以通过以下方面进行了解:

利用临时表进行测试

with tb as 

    select 1 n from dual union all

    select 1 n from dual union all

    select null n from dual union all

    select 2 n from dual union all    

    select 3 n from dual

)

1, 获取查询结果总行数

select count() from tb; -- 5

由tb数据可见,tb中共有5条数据。

2,查询非null字段的行数

select count(n) from tb; -- 4

该语句查询字段n不为null的总数量,由tb可见,n有一行为null,所以结果为4

需要注意,若n为非null字段,查询总数时,使用count() 比 count(n)速度要快。

原因是count(字段)在统计时,若字段为null,计数不加。若字段不是null,计数+1

3, 统计非空字段的非重复的内容数量

select count(distinct n) from tb; -- 3

由于count(n)为获取非null字段数量。distinct为去掉重复值。所以,此结果为先去掉n的重复值再统计。

4,计算字段的非重复数量

select count(distinct nvl(n, 4) from tb; -- 5

先提供null值为一个n中不存在的值,然后去掉重复值进行统计。

效果等同于

select count(distinct n)+1 from tb;

以上就是关于MySQL的count(*)性能怎么样全部的内容,包括:MySQL的count(*)性能怎么样、求助:刚刚我用mysql执行了一个count函数,咋么时间那么长呢、数据库中Count是什么意思和SUM有什么区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9816904.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存