EXPLAIN和SHOW TABLE STATUS LIKE里返回的rows为什么不准确

发布时间:2021-12-24 09:22:07 作者:柒染
来源:亿速云 阅读:356

这篇文章给大家介绍EXPLAIN和SHOW TABLE STATUS LIKE里返回的rows为什么不准确,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

“SHOW TABLE STATUS LIKE 里返回的 rows 为什么不是准确的啊 ?”今天,我就抽个时间简单的说一下!

首先,我们根据字面意思来看,rows 代表的行数。准确的说是受影响的行数,或者说是扫描的行数!

从理论上来说,我实际查询扫描了多少行数,应该是准确的。但是这里显示不准确,MySQL 统计的不准确,是 MySQL 故意这样设计的吗?如果是,那为什么要这样设计?

显然,不准确的这件事,MySQL 是知道的。那么它这样设计一定是有原因的。

我们都知道,MySQL 有一个优化器,它会对你的 SQL 进行一些优化。优化器的原理就是在真正执行 SQL 之前来估算一些每种执行策略的代价,选择一种它认为最好的方案去执行!

由于,优化器是在真正执行前做出的判断,所以它不可能是准确的。优化器,只能根据索引的“区分度”来统计、估算要扫描的行数。

在这里,MySQL 为了操作数据更高效。利用数学知识,做了一个抽样统计。

抽样,就是 InnoDB 默认会选择 N 个数据页,统计这些页面上的不同值,得到一个平均值,然后乘以这个索引的页面数,就得到了这个索引的基数。

以上也就解释了为什么 EXPLAIN 和 SHOW TABLE STATUS LIKE 里返回的 rows 不准确!

关于EXPLAIN和SHOW TABLE STATUS LIKE里返回的rows为什么不准确就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. MySQL中使用show variables like查询
  2. MYSQL explain详解之range

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

explain rows

上一篇:rabbitMq中架构是怎么样的

下一篇:linux中如何删除用户组

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》