sql >> Database >  >> RDS >> Mysql

Hoe de hoogste N-waarden van elke kolom in MySql te krijgen?

Dit is NIET iets dat u in een enkele zoekopdracht wilt doen. Breek het gewoon uit, één zoekopdracht voor elke kolom. Onder de juiste omstandigheden (ook bekend als met de juiste indexen en rechterkolomtypen), kan MySQL deze zoekopdrachten daadwerkelijk optimaliseren door kortsluiting, zodat het nooit de hele tabel hoeft te scannen, het haalt gewoon de top 5 waarden eruit en klaar.

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

Als je ze allemaal samen probeert te smeden tot één gigantische, onhandige query, zul je de optimizer alleen maar kunnen overtuigen om het gewoon op te geven en de hele tabel 50 keer opnieuw te scannen en dan 50 tijdelijke tabellen te gebruiken en waarschijnlijk wat bestandssortering voor een goede maatregel. Dus tenzij uw tabel ongeveer 10 rijen bevat (wat duidelijk niet het geval is), zullen 50 afzonderlijke zoekopdrachten altijd sneller zijn.



  1. Hoe een kolom toevoegen als deze niet bestaat op PostgreSQL?

  2. Postgre SQL LIKE voor Integer

  3. PostgreSQL-extensie installeren op alle schema's

  4. Hoe stel ik de waarde van een reeks automatisch elk jaar opnieuw in op 0 in Oracle 10g?