select count(*) from table where relation_title='xxxxxxxxx'; +----------+ | count(*) | +------6ren">
gpt4 book ai didi

mysql - 为什么 "explain"返回的行不等于 count()?

转载 作者:行者123 更新时间:2023-11-29 16:46:09 24 4
gpt4 key购买 nike

    mysql> select count(*) from table where relation_title='xxxxxxxxx';
+----------+
| count(*) |
+----------+
| 1291958 |
+----------+

mysql> explain select * from table where relation_title='xxxxxxxxx';
+----+-------------+---------+-
| id | select_type | rows |
+----+-------------+---------+-
| 1 | SIMPLE | 1274785 |
+----+-------------+---------+-

我认为“解释 select * from table where relation_title='xxxxxxxxx';”按索引返回relation_title='xxxxxxxxx'的行。但它比真实的数字要小。

最佳答案

它显示了为了获得结果而运行了多少行。

数据错误的原因是 EXPLAIN 不准确,它根据存储的有关表的信息对您的数据进行猜测。

这是非常有用的信息,例如,在许多表上执行 JOINS 时,您希望确保不会遍历整个连接表来获取每一行的一行信息。

这是对 608 行表的测试。

SELECT COUNT(id) FROM table WHERE user_id = 1

结果:

COUNT(id)
512

这是解释

EXPLAIN SELECT COUNT(id) FROM table WHERE user_id = 1

结果:

id  rows
1 608

关于mysql - 为什么 "explain"返回的行不等于 count()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53109241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com