Saya katakan Anda tidak melakukan itu, karena dua alasan:
- pesan kesalahan agak tidak jelas:ERROR 1062 (23000):Entri duplikat 'xxx' untuk kunci 1 . Apakah Anda selalu 100% yakin kunci mana yang 1?
- mengunci Anda ke vendor database tertentu
Saya merasa lebih mudah untuk secara transaksional :
- periksa keberadaan baris;
- melempar pengecualian jika baris sudah ada;
- masukkan baris baru.
Masalah kinerja :
Saya katakan ukur dua kali, potong sekali . Profil penggunaan untuk kasus penggunaan spesifik Anda. Di atas kepala saya, saya akan mengatakan bahwa kinerja tidak akan menjadi masalah kecuali untuk skenario penggunaan db yang berat.
Alasannya adalah setelah Anda melakukan SELECT
atas baris tertentu, datanya akan ditempatkan di cache database dan segera digunakan untuk pemeriksaan penyisipan yang dilakukan pada indeks untuk INSERT
penyataan. Juga perlu diingat bahwa akses ini didukung oleh indeks mengarah pada kesimpulan bahwa kinerja tidak akan menjadi masalah.
Tapi, seperti biasa, lakukan pengukuran.