Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać najwyższe N ​​wartości każdej kolumny w MySql

NIE jest to coś, co chcesz zrobić w jednym zapytaniu. Po prostu podziel to, jedno zapytanie dla każdej kolumny. W odpowiednich okolicznościach (czyli z właściwymi indeksami i właściwymi typami kolumn) MySQL może faktycznie zoptymalizować te zapytania poprzez krótkie obwody, dzięki czemu nigdy nie musi skanować całej tabeli, po prostu wyciąga 5 najwyższych wartości i gotowe.

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

Jeśli spróbujesz połączyć je wszystkie w jedno gigantyczne, niezgrabne zapytanie, zdołasz tylko przekonać optymalizatora, aby po prostu zrezygnował i ponownie przeskanował całą tabelę 50 razy, a następnie skorzystał z 50 tabel tymczasowych i prawdopodobnie sortowania plików na dokładkę. Więc jeśli Twoja tabela nie zawiera około 10 wierszy (co oczywiście nie ma), 50 oddzielnych zapytań zawsze będzie szybszych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj dane dla określonego przedziału czasu

  2. Mac OS X Lion - mysql:nie znaleziono polecenia

  3. Podziel tabelę po X liczbie wierszy i dodaj tekst w pętli while (przy użyciu protokołu TCPDF)

  4. mySQL INSERT IGNORE nie ignoruje

  5. PHP - poleganie na ustawieniach strefy czasowej systemu nie jest bezpieczne