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.


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.


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.


1
Apakah ini perlu ditutup untuk dapat mengandalkan pertanyaan SO? Apakah ini salah satu dari "migrasi SO ke dba.SE"?
jcolebrand
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.