sql >> Base de Datos >  >> RDS >> Mysql

Cómo obtener los valores N superiores de cada columna en MySql

Esto NO es algo que desee hacer en una sola consulta. Simplemente divídalo, una consulta para cada columna. En las circunstancias adecuadas (es decir, con los índices correctos y los tipos de columna correctos), MySQL puede optimizar estas consultas mediante un cortocircuito para que nunca tenga que escanear toda la tabla, solo extrae los 5 valores principales y listo.

SELECT column1 FROM table ORDER BY column1 DESC LIMIT 5
SELECT column2 FROM table ORDER BY column2 DESC LIMIT 5
etc

Si intenta juntarlos a todos en una consulta gigante y torpe, solo logrará convencer al optimizador para que se dé por vencido y vuelva a escanear toda la tabla 50 veces y luego use 50 tablas temporales y probablemente alguna clasificación de archivos para una buena medida. Entonces, a menos que su tabla tenga alrededor de 10 filas (que obviamente no las tiene), 50 consultas separadas siempre serán más rápidas.