我使用的是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行进行扫描?
这里是有关MySQL EXPLAIN limits and errors的文章的很好链接
LIMIT在估算行数时未考虑在内如果您有LIMIT来限制要检查的行数MySQL仍会打印完整号码
您需要使用以下命令:
EXPLAIN SELECT id, name, thumb
FROM twitter_profiles ORDER BY LIMIT 10;