sql >> Databáze >  >> RDS >> Mysql

Jak získat horní N hodnoty každého sloupce v MySql

NENÍ to něco, co byste chtěli udělat v jediném dotazu. Stačí to rozdělit, jeden dotaz pro každý sloupec. Za správných okolností (neboli se správnými indexy a správnými typy sloupců) může MySQL skutečně optimalizovat tyto dotazy zkratováním tak, že nikdy nemusí skenovat celou tabulku, pouze vytáhne prvních 5 hodnot a hotovo.

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

Pokud se je pokusíte všechny sloučit do jednoho obřího, nemotorného dotazu, podaří se vám pouze přesvědčit optimalizátora, aby to vzdal a 50krát znovu proskenoval celou tabulku a pak použil 50 dočasných tabulek a pravděpodobně nějaké třídění souborů pro dobrou míru. Pokud tedy vaše tabulka nemá přibližně 10 řádků (což samozřejmě nemá), bude 50 samostatných dotazů vždy rychlejších.



  1. Jak říct Oracle, aby třídil podle konkrétního pořadí řazení předaného z Java?

  2. Získejte data pro více samostatných nebo referenčních dat bez podobného operátora

  3. PHP mySQL - Můžete vrátit přidružené pole s číselným indexem?

  4. Neznámý sloupec v chybě 'seznam polí' v dotazu aktualizace MySQL