ターン:
AS WITH ORACLE用法
クエリを使用していない選択を開始、しかし「WITH」初めにキーワードがために
、実際のクエリは一時テーブルを作成する前に、事前に考慮することができる、それが更なる分析および処理のために数回使用することができます
法の条項の長所WITH
SQLの可読性を高め、複数のサブクエリで構成ならば、構造が明確になります。より重要である:場所は、パフォーマンスを提供します理由です、「1つの分析は、多くの時間を使用」、到達客観「あまり読んで」。
第一の方法は、サブクエリテーブルが2回スキャン、およびWITH句の方法を使用し、テーブルを一度だけスキャンされる使用します。これは、大幅にデータ分析とクエリの効率を向上させることができます。
また、句メソッドの実装計画「SYS_TEMP_XXXX」WITH観察は、運転中に一時テーブル統計の途中で構築されます。
構文:
TEMPNAMEととして(選択...) ...]を選択します。
- エイリアスの
TMPとAS(SELECT * からtb_name)- より多くのエイリアスのとTMP AS(SELECT * からtb_name)、TMP2 (AS SELECT * からtb_name2)、TMP3 AS(SELECT * からtb_name3)、...
- 構築された一時表Eに相当
EとAS(SELECT * SCOTT.EMP eからWHERE e.empno = 7499 )SELECT * から、電子- 同等特注Eは、D一時テーブルとE AS(SELECT * D)SCOTT.EMP AS(SELECT * からSCOTT.DEPT)SELECT * EからD WHERE e.deptno = d.deptno。
実際には、内部などで多くのSQL文を繰り返し使用し、SQL文の最適化など、大量のためにあなたがそれを使用することができ、クエリが続くエイリアスは、役割を果たしているが、明確な。
テーブルにデータを挿入して使用状況などを持ちます:
インサートに表2
と S1 として(ROWNUM C1を選択デュアル接続からROWNUMによって<= 10 )、S2 (AS ROWNUM C2を選択デュアル接続からROWNUMによって<= 10 )b.c2、a.c1を選択S1 A、S2 Bからどこ...;
仮想ビューの同等として持ちます。
フレーズとも呼ばれるサブクエリの一部(副問合せのファクタリング)として、あなたは多くのことを行うことができますし、SQLの作品の定義は、SQLフラグメントは、SQL文全体で使用されます。
時には、より読みやすいいくつかのSQL文を作るために、データを提供するの一環として、労働組合の異なる部分すべてがあるかもしれません。
すべての労働組合のために特に有用。
労働組合の各部分が全て同じであってもよいが、各パーツは再びそれを実行する場合は、コストが高すぎるので、その後、もう一度それを実行し、フレーズとして使用することができます。
テーブル名で定義されたフレーズが二回以上呼ばれていたとした場合に一度だけ呼び出された場合、オプティマイザは自動的に一時テーブルへのフレーズとして得られたデータと、それはないだろう。
プロンプトが表示されますのマテリアライズは、グローバルの一時テーブルに句のように必須のデータです。
この方法により、クエリの多くは、速度を向上させることができます。
SQL1 (として選択TO_CHAR()s_name からtest_tempa)、SQL2 (として選択TO_CHAR(B)s_name test_tempbからではないが存在する(選択s_name SQL1からROWNUM = 1 ))を選択* からSQL1 組合全て選択* からSQL2 組合すべての選択「はレコードません」からデュアルませんが存在する(選択s_name SQL1からROWNUM= 1 )とではないが存在する(s_nameを選択SQL2からROWNUM = 1)。
利点としてで
読みやすさのSQLを増加させ、複数のサブクエリで構築すれば、構造がなる明確;
もっと重要なのは、次のとおりです。地元の性能の規定は、「あまり達成する理由である、「1つの分析、何回も使います」 「ゴールを読みます