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.