Saya merasa perlu untuk menunjukkan, meskipun tersentuh dalam komentar, bahwa dalam situasi ini:
SELECT 1 FROM my_table WHERE *indexed_condition* LIMIT 1
Lebih unggul dari:
SELECT * FROM my_table WHERE *indexed_condition* LIMIT 1
Ini karena kueri pertama dapat dipenuhi oleh indeks, sedangkan kueri kedua membutuhkan pencarian baris (kecuali mungkin semua kolom tabel dalam indeks yang digunakan).
Menambahkan LIMIT
klausa memungkinkan mesin berhenti setelah menemukan baris apa pun.
Kueri pertama harus sebanding dengan:
SELECT EXISTS(SELECT * FROM my_table WHERE *indexed_condition*)
Yang mengirimkan sinyal yang sama ke mesin (1 / * tidak ada bedanya di sini), tapi saya masih menulis 1 untuk memperkuat kebiasaan ketika menggunakan EXISTS
:
SELECT EXISTS(SELECT 1 FROM my_table WHERE *indexed_condition*)
Mungkin masuk akal untuk menambahkan EXISTS
pembungkus jika Anda membutuhkan pengembalian eksplisit ketika tidak ada baris yang cocok.
...EXISTS( SELECT 1/0 FROM someothertable)
. Untuk SQL Server & Oracle - tidak ada bedanya untuk menggunakan *, 1 atau NULL karena ADA hanya menguji boolean berdasarkan 1+ dari pencocokan kriteria WHERE.