Apakah ini pola umum baru di Oracle Di mana ada (Pilih NULL FROM ...)?

8

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.

bernd_k
sumber
2
SO punya diskusi tentang ini. stackoverflow.com/questions/424212/…
Leigh Riffel

Jawaban:

6

Jawaban singkat: Saya harap tidak!

Bahkan SELECT 1idiom 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 mana SELECT *digunakan.

Larry Coleman
sumber
5

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.

Leigh Riffel
sumber
1
Apakah ini perlu ditutup untuk dapat mengandalkan pertanyaan SO? Apakah ini salah satu dari "migrasi SO ke dba.SE"?
jcolebrand