我对数据库没有太多经验,但这件事有点令人困惑: 首先我做了:
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/