utilizo MySQL versión 5.5.14 del servidor y ahora estoy tratando esta simple consulta SQL con Explica comando:Comando mySQL ¿Explicar ignorar LIMIT?
EXPLAIN SELECT id, name, thumb FROM `twitter_profiles` LIMIT 10;
y me muestra este resultado:
+----+-------------+-------+------+---------------+------+---------+------+-------+-------+
| 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)
Mi pregunta es por qué se escanea toda la tabla en lugar de tomar las primeras 10 filas como lo especifiqué en la cláusula LIMIT?
¡Gracias por su asesoramiento con anticipación!
Cheers,
Jakub
@Evgi Aha, pero solo se trata del proceso de estimación, ¿no? En frente, mysql solo tomará las 10 filas mencionadas, ¿es verdad? –
sí es cierto :) :) –
@Jakub, a menos que agregue una cláusula ORDER BY, que es el caso habitual (de lo contrario, sus 10 filas no son aleatorias ni deterministas). Necesita recuperar todas las filas coincidentes para ordenarlas, incluso si finalmente no se envían al cliente. –