Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir les N premières valeurs de chaque colonne dans MySql

Ce n'est PAS quelque chose que vous voulez faire en une seule requête. Décomposez-le simplement, une requête pour chaque colonne. Dans les bonnes circonstances (c'est-à-dire avec les bons index et les bons types de colonnes), MySQL peut en fait optimiser ces requêtes en court-circuitant afin qu'il n'ait jamais à analyser toute la table, il extrait simplement les 5 premières valeurs et c'est fait.

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

Si vous essayez de les regrouper en une seule requête géante et kludgy, vous ne réussirez qu'à convaincre l'optimiseur d'abandonner et de réanalyser la table entière 50 fois, puis d'utiliser 50 tables temporaires et probablement un tri de fichiers pour faire bonne mesure. Ainsi, à moins que votre table ne contienne environ 10 lignes (ce qui n'est évidemment pas le cas), 50 requêtes distinctes seront toujours plus rapides.