En el peor de los casos, cuando usted está buscando en un campo no indexado, utilizando MIN()
requiere una única completa pase de la mesa El uso de SORT
y LIMIT
requiere una clasificación de archivo. Si se ejecuta contra una tabla grande, es probable que haya una diferencia significativa en el rendimiento percibido. Como punto de datos sin sentido, MIN()
tomó .36s mientras que SORT
y LIMIT
tomaron .84s contra una tabla de 106,000 filas en mi servidor de desarrollo.
Sin embargo, si está viendo una columna indexada, la diferencia es más difícil de notar (el punto de datos sin sentido es 0.00s en ambos casos). Sin embargo, al mirar el resultado de Explain, parece que MIN()
es capaz de arrancar el valor más pequeño del índice ('Seleccionar tablas optimizadas de distancia' y 'NULL' filas) mientras que el SORT
y LIMIT
aún necesita hacer un recorrido ordenado del índice (106,000 filas). El impacto real en el rendimiento es probablemente insignificante.
Parece que MIN()
es el camino a seguir, es más rápido en el peor de los casos, indistinguible en el mejor de los casos, es SQL estándar y expresa más claramente el valor que está tratando de obtener. El único caso en el que parece que usar SORT
y LIMIT
sería conveniente, como se mencionó en mson, donde está escribiendo una operación general que encuentra los valores N superiores o inferiores de columnas arbitrarias y no vale la pena escribir el caso especial operación.
o (n) para una sola pasada frente a 0 (nlogn) para ordenar –
@AbhishekIyer tiene toda la razón, pero yo añadiría "en el peor de los casos para el campo no indizado". – dmikam