2012-05-08 5 views
4

私はOracleにSQLを書いています。 SQLでは、同じサブクエリが2回使用されています。私はそのような一般的なサブクエリや再利用するクエリを置き換えるための最良の方法を見つけることを試みています。同じサブクエリが2回使用されたときにOracleでSQLを書くベストプラクティスを探します。

サブクエリのビューを作成しようとしていましたが、許可していません。グローバル・テンポラリ・テーブルは他の解決策かもしれませんが、私はそのようなテーブルが実際に作成して落とすことではないことを知りました。

+0

:私は 'procedure'を作成するために、そのより良いと思うし、その内部でそのクエリを使用procを呼び出し、そのクエリの結果が必要なときに毎回そのprocを呼び出しました。ビューを作成するためのアクセス権があると考えています –

+3

@Guarav:私は同意しません。あなたがSQLでそれを行うことができるなら、あなたはすべきです。なぜ、プロシージャでクエリを複雑にするのですか(SQLから使用することすらできず、PL/SQLを使用する必要があります)、パフォーマンスに悪影響を及ぼす可能性があります。 Jeffery Kemp州としてWITH句を使用したり、サブクエリを繰り返したりすることをおすすめします。 – DCookie

+0

@DCookie:訂正してくれてありがとうございました。 –

答えて

6

あなたはビューまたはグローバル一時テーブルを使用することができますが、それはWITH句を使用することが多い方が良いです、例えば:

WITH q AS 
    (SELECT something FROM mytable) 
SELECT something FROM q 
UNION ALL 
SELECT something+1 FROM q; 
関連する問題