11

我使用 MySQL 服务器版本 5.5.14,现在我正在尝试使用 Explain 命令进行这个简单的 SQL 查询:

EXPLAIN SELECT id, name, thumb FROM `twitter_profiles` LIMIT 10;

它向我展示了这个结果:

+----+-------------+-------+------+---------------+------+---------+------+-------+-------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows  | Extra |
+----+-------------+-------+------+---------------+------+---------+------+-------+-------+
|  1 | SIMPLE      | tp    | ALL  | NULL          | NULL | NULL    | NULL | 40823 |       |
+----+-------------+-------+------+---------------+------+---------+------+-------+-------+
1 row in set (0.02 sec)

我的问题是为什么它扫描整个表而不是像我在 LIMIT 子句中指定的那样获取前 10 行?

4

2 回答 2

17

这里是关于MySQL EXPLAIN 限制和错误的文章的一个很好的链接

估计行数时不考虑 LIMIT 即使你有限制检查行数的 LIMIT MySQL 仍然会打印完整的行数

于 2011-07-21T11:50:14.347 回答
-4

您需要通过以下方式使用订单:

EXPLAIN SELECT id, name, thumb
FROM twitter_profiles ORDER BY LIMIT 10;
于 2011-07-21T11:52:45.813 回答