首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在解释中mysql行计数很高?

为什么在解释中mysql行计数很高?
EN

Database Administration用户
提问于 2015-12-11 04:22:52
回答 3查看 4.2K关注 0票数 3

我在使用mysql,这是查询-

代码语言:javascript
复制
mysql> select count(*) from payments as Payment WHERE `Payment`.`fordate` BETWEEN '2015-11-28 00:00:00' AND '2015-12-31 23:59:59';
+----------+
| count(*) |
+----------+
|   187216 |
+----------+
1 row in set (0.16 sec)

mysql> explain select count(*) from payments as Payment WHERE `Payment`.`fordate` BETWEEN '2015-11-28 00:00:00' AND '2015-12-31 23:59:59';
+----+-------------+---------+-------+-----------------+-----------------+---------+------+--------+--------------------------+
| id | select_type | table   | type  | possible_keys   | key             | key_len | ref  | rows   | Extra                    |
+----+-------------+---------+-------+-----------------+-----------------+---------+------+--------+--------------------------+
|  1 | SIMPLE      | Payment | range | pafordate_index | pafordate_index | 5       | NULL | 379894 | Using where; Using index |
+----+-------------+---------+-------+-----------------+-----------------+---------+------+--------+--------------------------+
1 row in set (0.04 sec)

为什么在解释行数太多,但在实际中,它是较少。

EN

回答 3

Database Administration用户

发布于 2015-12-11 06:38:29

桌子是InnoDB吗?因此,索引统计信息是由“指数潜水”收集的,而且根据定义是不精确的。

EXPLAIN实际上不是在执行查询,而是使用估计值来规划查询,从而显示那些不精确的数字。

重要的是,如果它将数字保持在与现实相同的顺序(在你的情况下,它是一个双倍),那么它对大多数情况都足够好。

在事务性环境中,保持精确的数字太麻烦了,甚至不太可能。

票数 3
EN

Database Administration用户

发布于 2015-12-12 17:26:17

在您的查询中,如果没有索引Payment.fordate,优化器希望搜索整个表。因为您只返回count(*)值,所以只返回一行。添加一个额外的列和一个group by子句可以改变预期返回的行数。

根据数据库中的统计数据解释计划使用估计数据。这些数据通常是错误的,但足够接近建立一个合理的计划。通常,数量级是计算的,而不是实际值。

由于在构造中间子句的计数时出错,该值可能会以2的因数被舍弃。

票数 1
EN

Database Administration用户

发布于 2015-12-11 05:37:30

解释计划只是简单地向您显示它必须排序多少行,才能得到结果。

如果要删除where子句并从表格_名字中执行"select计数(*)“,那么它将返回表中所有行的计数,您的解释计划将与总数匹配。

票数 -1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/123430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档