Dalam kasus terburuk, saat Anda melihat bidang yang tidak terindeks, penggunaan MIN()
memerlukan satu jalur penuh tabel. Menggunakan SORT
dan LIMIT
membutuhkan fileort. Jika dijalankan dengan tabel besar, kemungkinan akan ada perbedaan signifikan dalam kinerja yang dipersepsi. Sebagai titik data yang tidak berarti, MIN()
mengambil .36s sementara SORT
dan LIMIT
mengambil .84s melawan tabel baris 106.000 di server dev saya.
Namun, jika Anda melihat kolom yang diindeks, perbedaannya lebih sulit untuk diperhatikan (poin data yang tidak berarti adalah 0,00 dalam kedua kasus). Melihat output dari menjelaskan, bagaimanapun, sepertinya MIN()
dapat dengan mudah memetik nilai terkecil dari indeks (baris 'Pilih tabel yang dioptimalkan' dan 'NULL') sedangkan SORT
dan LIMIT
masih perlu melakukan traversal indeks (106.000 baris). Dampak kinerja sebenarnya mungkin dapat diabaikan.
Sepertinya MIN()
begitulah 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 adalah, seperti yang disebutkan mson , di mana Anda menulis operasi umum yang menemukan nilai N atas atau bawah dari kolom arbitrer dan tidak ada gunanya menulis operasi kasus khusus.