Cuando agrego LIMIT 1 a una consulta de MySQL, ¿se detiene la búsqueda después de encontrar 1 resultado (por lo que es más rápido) o lo hace todavía obtener todos los resultados y trunca al final?¿Agregar 'LIMIT 1' a las consultas de MySQL las hace más rápidas cuando sabes que solo habrá 1 resultado?
Respuesta
Dependiendo de la consulta , agregar una cláusula de límite puede tener un gran efecto en el rendimiento. Si solo desea una fila (o sabe de hecho 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 que no da en un índice, etc.), entonces definitivamente deberías agregar una cláusula LIMIT.
En cuanto a consultas optimizadas (usando índices en tablas pequeñas) probablemente no importará mucho en rendimiento, pero de nuevo, si solo está interesado en una fila, agregue una cláusula LIMIT.
Para evitar problemas, es posible que desee considerar enviar LIMIT 2 y luego quejarse o bombardear si su suposición de una sola fila no se cumple. –
@JeffreyHantin Si realmente puede haber solo uno, debería preferir agregar una restricción única a la base de datos. Mucho más limpio que estropear tu código con chequeos de cordura. –
@CristianVrabie Si se puede expresar como una restricción única, claro, pero eso es una afirmación sobre los datos en las tablas. Enviar LÍMITE 2 y verificar 1 es una afirmación sobre la consulta en sí misma, que bien puede contener un error, como una condición de unión inadecuadamente especificada. –
Si realmente sólo se espera un resultado único, lo que realmente tiene sentido para añadir el límite a su consulta. No conozco el funcionamiento interno de MySQL, pero estoy seguro de que no reunirá un conjunto de resultados de 100 000 registros para truncarlo a 1 al final.
límite puede afectar el rendimiento de la consulta (ver comentarios y el enlace más abajo) y también se reduce el conjunto de resultados que se emite por MySQL. Para una consulta en la que espera un solo resultado, hay beneficios.
Por otra parte, lo que limita el conjunto de resultados puede en la velocidad de hecho, el tiempo total de la consulta como la transferencia de grandes conjuntos de resultados utilizar la memoria y potencialmente crear tablas temporales en el disco. Menciono esto porque recientemente vi una aplicación que no usaba Limitar matar a un servidor debido a los enormes conjuntos de resultados y, con el límite establecido, la utilización de los recursos disminuyó enormemente.
Marque esta página para más detalles: MySQL Documentation: LIMIT Optimization
La página que vinculó dice: "Si selecciona solo unas pocas filas con LIMIT, MySQL usa índices en algunos casos cuando normalmente preferiría hacer un escaneo de tabla completo". Eso no parece que la consulta en sí misma siempre se procese como de costumbre. – che
buen punto. Estaba haciendo una generalización basada en observaciones del uso de EXPLAIN. Gracias por la captura. – rjamestaylor
Si sólo hay 1 resultado regresando, entonces no, LÍMITE no hacerlo más rápido. Si hay muchos resultados, y solo necesita el primer resultado, y no hay instrucciones GROUP u ORDER by, LIMIT lo hará más rápido.
Debería ser más rápido incluso con 1 fila, si no hay claves únicas/principales, porque deja de buscar después de encontrar la primera aparición –
La respuesta, en resumen, 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.
- 1. MySQL: "LIMIT 5" hace que las advertencias
- 2. mysql join with limit 1
- 3. Importancia de DONDE 1 en consultas MySQL
- 4. ¿LIMIT 1 dentro de JOIN de tablas específicas en MySQL?
- 5. android.os.StrictMode instances = 2; limit = 1
- 6. ¿Es x + = 1 más eficiente que x = x + 1?
- 7. ¿Tiene sentido usar "LIMIT 1" en una consulta "SELECT 1 ..."?
- 8. Las consultas de MySQL son rápidas cuando se ejecutan directamente pero realmente son lentas cuando se ejecutan como proc almacenado
- 9. Mysql 1 Random Fila
- 10. PHP a EasyPHP servidor MySQL 1 segundo retraso de conexión
- 11. ¿LIMIT 1 tiene algún aumento de rendimiento?
- 12. Cuándo usar relaciones de 1 a 1 entre las tablas de la base de datos?
- 13. usar MySQL lower_case_table_names a 1
- 14. PHP mysql Distinto, solo carga 1 conjunto de identificadores
- 15. MySQL: Join (2 mesas) vs consultas individuales (1 mesa)
- 16. PHP MySQL donde la longitud es más larga que 1
- 17. ¿No deberían las declaraciones preparadas ser mucho más rápidas?
- 18. ¿Cuáles son las posibles maneras de forzar a mathematica a mostrar -1 + a como a-1
- 19. Cuestiones de cálculo de Mysql: 1 + 1 = 1.999999999
- 20. ¿Qué valor de flotante hace que sprintf_s() produzca "1. # QO"?
- 21. Haskell: Equation Expander 1+ (1+ (1+ (1+ (...)))) = ∞
- 22. bloqueando solo 1 operación?
- 23. En Javascript, ¿por qué [1, 2] == [1, 2] o ({a: 1}) == ({a: 1}) es falso?
- 24. Añadir 1 a un campo
- 25. Las instancias a las que hace referencia 'bound_this' solo no son basura recolectada
- 26. MySQL Update Column +1?
- 27. MySQL - mysqldump --rutinas solo para exportar 1 procedimiento almacenado (por nombre) y no todas las rutinas
- 28. ¿Usar "LIMIT 1" acelera una consulta en una clave principal?
- 29. Ruby whitespace: ¿Es {: a => 1} mejor que {: a => 1}?
- 30. ¿Por qué SVG stroke-width: 1 hace que las líneas sean transparentes?
No si hay un UNIQUE' (o 'PRIMARIA KEY')' restricción (o índice) en la columna de filtro. http://stackoverflow.com/questions/8467092/does-using-limit-1-speed-up-a-query-on-a-primary-key – ma11hew28