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

MIN/MAX vs ORDER BY dan LIMIT

Dalam kasus terburuk, di mana Anda melihat bidang yang tidak diindeks, menggunakan MIN() membutuhkan satu pass penuh dari tabel. Menggunakan SORT dan LIMIT membutuhkan file sort. Jika dijalankan melawan meja besar, kemungkinan akan ada perbedaan signifikan dalam kinerja yang dirasakan. Sebagai titik data anekdot, MIN() membutuhkan waktu 0,36 detik saat SORT dan LIMIT membutuhkan waktu .84 detik melawan tabel baris 106.000 di server dev saya.

Namun, jika Anda melihat kolom yang diindeks, perbedaannya lebih sulit untuk diperhatikan (titik data yang tidak berarti adalah 0,00 dalam kedua kasus). Namun, melihat output dari penjelasan, sepertinya MIN() dapat dengan mudah mengambil nilai terkecil dari indeks (baris 'Pilih tabel yang dioptimalkan' dan 'NULL') sedangkan SORT dan LIMIT masih perlu melakukan traversal indeks yang berurutan (106.000 baris). Dampak kinerja yang sebenarnya mungkin dapat diabaikan.

Sepertinya MIN() adalah cara untuk pergi - lebih cepat dalam kasus terburuk, tidak dapat dibedakan dalam kasus terbaik, adalah SQL standar dan paling jelas mengekspresikan nilai yang Anda coba dapatkan. Satu-satunya kasus di mana tampaknya menggunakan SORT dan LIMIT akan diinginkan, sebagai mson disebutkan, tempat Anda menulis operasi umum yang menemukan nilai N teratas atau terbawah dari kolom arbitrer dan tidak layak untuk menulis operasi kasus khusus.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah mysql_real_escape_string() dan mysql_escape_string() cukup untuk keamanan aplikasi?

  2. Cara mengaktifkan INNODB di mysql

  3. Langkah-langkah untuk Menginstal MySQL8 di CentOS

  4. Docker:Menggabungkan beberapa gambar

  5. MySQL 8.0 - Klien tidak mendukung protokol otentikasi yang diminta oleh server; pertimbangkan untuk memutakhirkan klien MySQL