Cuando agrego LIMIT 1 a una consulta MySQL, ¿detiene la búsqueda después de encontrar 1 resultado (lo que la hace más rápida) o aún obtiene todos los resultados y se trunca al final?
mysql
optimization
limit
Logan Serman
fuente
fuente
UNIQUE
(oPRIMARY KEY
) restricción (o índice) en la columna del filtro. stackoverflow.com/questions/8467092/…Respuestas:
Dependiendo de la consulta, agregar una cláusula de límite puede tener un efecto enorme en el rendimiento. Si desea solo una fila (o sabe con certeza que solo una fila puede satisfacer la consulta) y no está seguro de cómo la ejecutará el optimizador interno (por ejemplo, la cláusula WHERE no golpea un índice, etc.), entonces definitivamente debería agregar una cláusula LIMIT.
En cuanto a las consultas optimizadas (usando índices en tablas pequeñas), probablemente no importará mucho en el rendimiento, pero de nuevo, si solo está interesado en una fila, agregue una cláusula LIMIT independientemente.
fuente
El límite puede afectar el rendimiento de la consulta (consulte los comentarios y el enlace a continuación) y también reduce el conjunto de resultados que genera MySQL. Para una consulta en la que espera un único resultado, hay beneficios.
Además, limitar el conjunto de resultados puede, de hecho, acelerar el tiempo total de consulta, ya que la transferencia de conjuntos de resultados grandes utiliza memoria y puede crear tablas temporales en el disco. Menciono esto porque vi recientemente una aplicación que no usaba limit kill a un servidor debido a enormes conjuntos de resultados y con el límite establecido, la utilización de recursos se redujo enormemente.
Consulte esta página para obtener más detalles: Documentación de MySQL: Optimización LIMIT
fuente
Si solo se obtiene 1 resultado, entonces no, LIMIT no lo hará más rápido. Si hay muchos resultados, y solo necesita el primer resultado, y no hay declaraciones GROUP u ORDER by, LIMIT lo hará más rápido.
fuente
La respuesta, en definitiva, es sí. Si limita su resultado a 1, incluso si está "esperando" un resultado, la consulta será más rápida porque su base de datos no revisará todos sus registros. Simplemente se detendrá una vez que encuentre un registro que coincida con su consulta.
fuente
Si realmente solo espera un resultado único, realmente tiene sentido agregar el LÍMITE a su consulta. No conozco el funcionamiento interno de MySQL, pero estoy seguro de que no recopilará un conjunto de resultados de más de 100.000 registros solo para truncarlo de nuevo a 1 al final.
fuente