为什么“explain”返回的行不等于count()?

2024-01-10

    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 不准确,它根据存储的有关表的信息对数据进行猜测。

这是非常有用的信息,例如,在对许多表进行联接时,您希望确保没有遍历整个联接表来获取每一行的一行信息。

这是对 608 行表的测试。

SELECT COUNT(id) FROM table WHERE user_id = 1

Result:

COUNT(id)
512

这是解释

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

Result:

id  rows
1   608
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么“explain”返回的行不等于count()? 的相关文章

随机推荐