Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara mendapatkan nilai N teratas dari setiap kolom di MySql

Ini BUKAN sesuatu yang ingin Anda lakukan dalam satu kueri. Pisahkan saja, satu kueri untuk setiap kolom. Dalam situasi yang tepat (alias dengan indeks yang tepat dan jenis kolom yang tepat), MySQL sebenarnya dapat mengoptimalkan kueri ini dengan hubungan arus pendek sehingga tidak perlu memindai seluruh tabel, ia hanya mengeluarkan 5 nilai teratas dan selesai.

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

Jika Anda mencoba untuk menyatukan semuanya menjadi satu kueri raksasa dan kludgy, Anda hanya akan berhasil meyakinkan pengoptimal untuk menyerah dan memindai ulang seluruh tabel 50 kali dan kemudian menggunakan 50 tabel temp dan mungkin beberapa penyortiran file untuk ukuran yang baik. Jadi, kecuali tabel Anda memiliki sekitar 10 baris di dalamnya (yang jelas tidak), 50 kueri terpisah akan selalu lebih cepat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php mysql Hubungkan Database dari server lain

  2. Bagaimana Anda membuat modul Python Msqldb digunakan? bukannya %s untuk parameter kueri?

  3. tidak dapat menampilkan simbol merek dagang di mysql ke html

  4. JPA gerhana dua kunci asing @IdClass kesalahan implementasi

  5. Menghubungkan Satu tabel ke Banyak tabel