mysql - 为什么行数与 SELECT COUNT(*) FROM table 不一样

标签 mysql sql database

我对数据库没有太多经验,但这件事有点令人困惑: 首先我做了:

mysql> EXPLAIN SELECT COUNT(*) FROM tweets;
+----+-------------+--------+-------+---------------+---------+---------+------+----------+-------------+
| id | select_type | table  | type  | possible_keys | key     | key_len | ref  | rows     | Extra       |
+----+-------------+--------+-------+---------------+---------+---------+------+----------+-------------+
|  1 | SIMPLE      | tweets | index | NULL          | user_id | 4       | NULL | 18683420 | Using index |
+----+-------------+--------+-------+---------------+---------+---------+------+----------+-------------+
1 row in set (0.03 sec)

比我尝试过这个:

mysql> SELECT COUNT(*) FROM tweets;
+----------+
| COUNT(*) |
+----------+
| 15254792 |
+----------+
1 row in set (9.60 sec)

但是行数与我从上次查询中获得的行数不同。 你能解释一下这是为什么吗?这是一个错误还是一个预期的结果?

最佳答案

预期。

解释 uses statistics关于制定查询计划的索引,而不是实际的索引(或数据)。

关于mysql - 为什么行数与 SELECT COUNT(*) FROM table 不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17405326/

相关文章:

c# - 如何防止 SqlConnection 上的时区转换?

database - 何时以及如何在 Grails 中创建索引?

mysql - 如何使用内连接更新选择中的字段值?

sql - 比较同一个表中的值集

mysql - LEFT JOIN 条件不影响结果

php - 在 Laravel Forge 上卸载 MySQL 而不删除 HHVM

mysql - 跨数据库更新?

mysql - 数据库性能调整有哪些资源?

sql - SQL:如何将数据插入具有列名称的表中

MySQL 查询优化 : Correct Index