Bertahun-tahun yang lalu, sudah biasa menulis
where exists (Select * from some_table where some_condition)
Tahun lalu saya perhatikan bahwa banyak skrip t-sql beralih menggunakan nomor 1 alih-alih bintang
where exists (Select 1 from some_table where some_condition)
hanya pada SO saya melihat contoh Oracle ini
WHERE EXISTS (SELECT NULL FROM ...
Apakah ini pola umum dengan Oracle? Dan yang merupakan argumen kinerja untuk menggunakan sesuatu seperti ini.
oracle
sql-server
style
bernd_k
sumber
sumber
Jawaban:
Jawaban singkat: Saya harap tidak!
Bahkan
SELECT 1
idiom itu mungkin sudah tidak ada manfaatnya, karena mesin basis data telah cukup maju untuk mengenali bahwa Anda tidak benar-benar menginginkan baris, Anda hanya ingin tahu apakah baris itu ada. Saya telah melihat rencana pelaksanaan di SQL 2005, dan umumnya melihat ini ditulis ulang sebagai gabungan, bahkan di manaSELECT *
digunakan.sumber
Dalam Oracle tidak masalah kinerja bijaksana. Anda bahkan dapat meletakkan 1/0 di sana dan pernyataan itu tidak akan mengembalikan pembagian dengan kesalahan nol karena ekspresi tidak dievaluasi.
sumber