これはOracle Whereの新しい一般的なパターンですか(Select NULL FROM…)?


8

数年前、書くことは一般的でした

where exists (Select * from some_table where some_condition)

昨年、多くのt-sqlスクリプトが星の代わりに数字の1を使用するように切り替わったことに気付きました

where exists (Select 1 from some_table where some_condition)

ちょうど私はこのOracleの例を見ました

WHERE EXISTS (SELECT NULL FROM ...

これはOracleで一般的なパターンですか?そして、これはこのようなものを使用するためのパフォーマンス引数です。


2
SOはこれについて議論しています。 stackoverflow.com/questions/424212/...
リーRiffel

回答:


6

短い答え:私はそうしないことを望みます!

SELECT 1データベースエンジンは、実際には行が必要ないことを認識できるほど高度になっているため、イディオムもその有用性よりも長く存続している可能性があります。行が存在するかどうかを知りたいだけです。私はSQL 2005の実行プランを見てきましたが、どこSELECT *で使用されていても、これらは一般的に結合として書き直されてきました。


5

Oracleでは、パフォーマンスは問題になりません。そこに1/0を置くこともでき、式は評価されないため、ステートメントはゼロ除算エラーを返しません。


1
これは、SOの質問に依存するためにクローズする必要がありますか?これは "SOをdba.SEに移行する"ものですか?
jcolebrand
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.