Ketika saya menambahkan LIMIT 1 ke kueri MySQL, apakah itu menghentikan pencarian setelah menemukan 1 hasil (sehingga membuatnya lebih cepat) atau apakah itu masih mengambil semua hasil dan memotong di bagian akhir?
mysql
optimization
limit
Logan Serman
sumber
sumber
UNIQUE
(atauPRIMARY KEY
) batasan (atau indeks) pada kolom filter. stackoverflow.com/questions/8467092/…Jawaban:
Bergantung pada kueri, menambahkan klausa batas dapat berdampak besar pada kinerja. Jika Anda hanya menginginkan satu baris (atau mengetahui fakta bahwa hanya satu baris yang dapat memenuhi kueri), dan tidak yakin tentang bagaimana pengoptimal internal akan mengeksekusinya (misalnya, klausa WHERE tidak mengenai indeks dan sebagainya), maka Anda pasti harus menambahkan klausa LIMIT.
Adapun kueri yang dioptimalkan (menggunakan indeks pada tabel kecil) mungkin tidak terlalu penting dalam kinerja, tetapi sekali lagi - jika Anda hanya tertarik pada satu baris daripada menambahkan klausa LIMIT.
sumber
Batasan dapat mempengaruhi kinerja kueri (lihat komentar dan tautan di bawah) dan juga mengurangi kumpulan hasil yang dikeluarkan oleh MySQL. Untuk kueri di mana Anda mengharapkan hasil tunggal ada manfaat.
Selain itu, membatasi kumpulan hasil sebenarnya dapat mempercepat waktu kueri total karena mentransfer kumpulan hasil yang besar menggunakan memori dan berpotensi membuat tabel sementara pada disk. Saya menyebutkan ini karena saya baru-baru ini melihat aplikasi yang tidak menggunakan limit kill server karena kumpulan hasil yang sangat besar dan dengan batasan di tempat, pemanfaatan sumber daya turun drastis.
Periksa halaman ini untuk lebih jelasnya: Dokumentasi MySQL: LIMIT Optimization
sumber
Jika hanya ada 1 hasil yang kembali, maka tidak, LIMIT tidak akan membuatnya lebih cepat. Jika ada banyak hasil, dan Anda hanya membutuhkan hasil pertama, dan tidak ada pernyataan GROUP atau ORDER maka LIMIT akan membuatnya lebih cepat.
sumber
Jawabannya, singkatnya, ya. Jika Anda membatasi hasil Anda menjadi 1, bahkan jika Anda "mengharapkan" satu hasil, kueri akan lebih cepat karena database Anda tidak akan memeriksa semua catatan Anda. Ini hanya akan berhenti setelah menemukan catatan yang cocok dengan kueri Anda.
sumber
Jika Anda benar-benar hanya mengharapkan satu hasil, sangat masuk akal untuk menambahkan LIMIT ke kueri Anda. Saya tidak tahu cara kerja MySQL, tapi saya yakin itu tidak akan mengumpulkan hasil kumpulan 100'000 + catatan hanya untuk memotongnya kembali ke 1 di akhir ..
sumber