Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere i primi N valori di ciascuna colonna in MySql

Questo NON è qualcosa che vuoi fare in una singola query. Basta scomporlo, una query per ogni colonna. Nelle giuste circostanze (ovvero con gli indici giusti e i tipi di colonna giusti), MySQL può effettivamente ottimizzare queste query cortocircuitando in modo che non debba mai scansionare l'intera tabella, estrae solo i primi 5 valori e il gioco è fatto.

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

Se provi a schiacciarli tutti insieme in un'unica query gigantesca, riuscirai solo a convincere l'ottimizzatore a rinunciare e scansionare nuovamente l'intera tabella 50 volte e quindi utilizzare 50 tabelle temporanee e probabilmente un po 'di ordinamento dei file per buona misura. Quindi, a meno che la tua tabella non contenga circa 10 righe (cosa che ovviamente non ha), 50 query separate saranno sempre più veloci.