Oracleの使用方法のZFなどとで

SQL文は、あなたがそれを使用することができ、クエリに続いて、内側に使用されるように、実際にエイリアス繰り返しがたくさんあるようで役割SQL文の最適化の大量のための役割を果たしているので、明らかに、しかし、明らか。フレーズとも呼ばれるようにサブクエリ一部(サブクエリファクタリング)、あなたは、物事の多くを行うSQLスニペットを定義することができ、SQLフラグメントは、SQL文全体で使用されます。時には、より読みやすいいくつかのSQL文を作るために、データを提供するの一環として、UNION ALLのさまざまな部分でがあるかもしれません。UNION ALLのために特に有用。UNION ALLの各部分が同じであってもよいが、各パーツは再びそれを実行する場合は、コストが高すぎるので、その後、もう一度それを実行し、フレーズとして使用することができます。テーブル名で定義されたフレーズが二回以上呼ばれていたとした場合、オプティマイザは自動的にTEMPテーブルへのフレーズとして得られたデータと、う一度だけ呼び出された場合、それはしません。実体化されますプロンプトが持つグローバル一時テーブルに句のように必須のデータです。この方法により、クエリの多くは、できる速度を向上させます

構文:

エイリアスの場合
のようにTMPと(tb_nameから選択* )

複数のエイリアスのため

   TMP AS(tb_nameからSELECT *)、
   TMP2(tb_name2からSELECT *)、AS
   (tb_name3からSELECT *)AS TMP3、
   ...

例:

- Eの同等は、一時テーブルを構築しました  

E(e.empno = 7499 SCOTT.EMP eから選択*)などで  

eから選択*; 

- 構築された電子の同等、D一時テーブル  

とともに  

     E(SCOTT.EMPから*を選択)として、  

     dと(SCOTT.DEPTから*を選択)  

eから*を選択し、Dどこe.deptno = d.deptno。 

UNION ALLと組み合わせて使用​​します

とともに  

    SQL1(TO_CHAR(test_tempaからA)s_nameを選択)として、  

    (存在しないtest_tempbからTO_CHARを選択(B)s_name(ROWNUM = 1)SQL1からs_nameを選択)としてSQL2  

SQL1から選択*  

労働組合のすべて  

SQL2から選択*  

労働組合のすべて  

デュアルから「は、レコード」を選択していません  

       ここで、存在しない(ここでROWNUM = 1 SQL1からs_nameを選択)  

       そして(ここでROWNUM = 1 SQL2からs_nameを選択)が存在しません。 

利点文のWITH:

(1)。SQL可読性を向上させます。たとえば、クエリは次のようなと特定の子のために意味のある名前を取ります。

(2)、サブクエリが一度だけ実行され、結果は、ユーザの一時表スペースに格納されて、あなたはパフォーマンスを向上させるために数回を参照することができます。

おすすめ

転載: www.cnblogs.com/friendlysong/p/11165502.html