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

ここにMySQLEXPLAINの制限とエラーに関する記事の良いリンクがあります

行数を見積もる際に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 に答える