Apakah ada gunanya menggunakan MySQL “LIMIT 1” saat menanyakan kunci utama/bidang unik?
Ini bukan praktik yang baik untuk menggunakan LIMIT 1
saat melakukan kueri dengan kriteria filter yang bertentangan dengan kunci utama atau batasan unik. Kunci utama, atau batasan unik, berarti hanya ada satu baris/catatan dalam tabel dengan nilai itu, hanya satu baris/catatan yang akan dikembalikan. Ini bertentangan untuk memiliki LIMIT 1
pada kunci utama/bidang unik--seseorang yang memelihara kode nanti dapat salah mengira pentingnya &menebak kode Anda.
Tapi indikator utamanya adalah rencana penjelasannya:
explain SELECT t.name FROM USERS t WHERE t.userid = 4
...mengembalikan:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
-----------------------------------------------------------------------------------------------------
1 | SIMPLE | users | const | PRIMARY | PRIMARY | 4 | const | 1 |
...dan:
explain SELECT t.name FROM USERS t WHERE t.userid = 4 LIMIT 1
...mengembalikan:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
-----------------------------------------------------------------------------------------------------
1 | SIMPLE | users | const | PRIMARY | PRIMARY | 4 | const | 1 |
Kesimpulan
Tidak ada perbedaan, tidak perlu. Tampaknya dioptimalkan dalam kasus ini (hanya mencari berdasarkan kunci utama).
Bagaimana dengan bidang yang diindeks?
Bidang yang diindeks tidak menjamin keunikan nilai yang difilter, mungkin ada lebih dari satu kemunculan. Jadi LIMIT 1
masuk akal, dengan asumsi Anda ingin mengembalikan satu baris.