sql >> Databasteknik >  >> RDS >> Mysql

Hur man får de översta N-värdena för varje kolumn i MySql

Detta är INTE något du vill göra i en enda fråga. Dela bara ut det, en fråga för varje kolumn. Under de rätta omständigheterna (alias med rätt index och höger kolumntyper) kan MySQL faktiskt optimera dessa frågor genom att kortsluta så att den aldrig behöver skanna hela tabellen, den tar bara ut de 5 bästa värdena och är klar.

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

Om du försöker slå ihop dem alla till en gigantisk, klumpig fråga kommer du bara att lyckas övertyga optimeraren att bara ge upp och skanna om hela tabellen 50 gånger och sedan använda 50 tillfälliga tabeller och förmodligen lite filsortering för god åtgärd. Så om inte din tabell har cirka 10 rader (vilket den uppenbarligen inte har), kommer 50 separata frågor alltid att vara snabbare.



  1. Få en MySQL-grupp efter fråga för att visa raden i den gruppen med det högsta värdet

  2. Hur felsöker man mysql användardefinierad funktion?

  3. Hur får man MySQL-tabellstorlek för tabeller i databasen?

  4. PG gem kommer inte att installeras i Rails-appen:Gem::Ext::BuildError:FEL:Det gick inte att bygga gem inbyggt tillägg