登录
首页 >  数据库 >  MySQL

MySQL InnoDB引擎的count处理及count(*)和count(1)区别

来源:SegmentFault

时间:2023-02-16 15:40:27 204浏览 收藏

数据库小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《MySQL InnoDB引擎的count处理及count(*)和count(1)区别》带大家来了解一下MySQL InnoDB引擎的count处理及count(*)和count(1)区别,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!

不讨论

MyISAM
引擎,
count
MyISAM
InnoDB
引擎下的区别是基础的区别。

文档地址:https://dev.mysql.com/doc/ref...

图片描述

翻译:

InnoDB
引擎并不在一个表中保存行内计数,因为并发事务会在相同时间看到不同的行数。因此,
SELECT COUNT(*)
语句只计算当前事务可见的行数。

MySQL 5.7.18
版本之前,
InnoDB
引擎通过扫描聚簇索引来处理
SELECT COUNT(*)
语句,在
MySQL 5.7.18
版本中,如果存在一个更小的二级索引,
InnoDB
会横向读取这个来执行
SELECT COUNT(*)
语句。

如果索引记录不完全在缓冲池中,则处理选择

SELECT(*)
语句需要一些时间。为了更快的计数,您可以创建一个计数器表,并让您的应用程序按插入和删除操作更新它。然而,这种方法在同一计数器表中启动成千上万个并发事务的情况下,可能无法很好地扩展。如果近似行计数足够,则可以使用
SHOW TABLE STATUS
语句。
InnoDB
引擎以同样的方式处理
SELECT COUNT(*)
COUNT(1)
,两者没有性能差异。

翻译自官方文档,肯定权威

今天关于《MySQL InnoDB引擎的count处理及count(*)和count(1)区别》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表