3.6.6. WITH 句


Data Virtualization は、WITH 句を介して一般的なテーブル式へのアクセスを提供します。  WITH 句の項目をテーブルとして参照するには、後続の WITH 句項目とメインのクエリーで使用することができます。WITH 句は、クエリースコープの一時テーブルを提供することと考えることができます。

用途

WITH name [(column, ...)] AS [/*+ no_inline|materialize */] (query expression) ...
Copy to Clipboard Toggle word wrap

構文ルール

  • 展開された列名はすべて一意でなければなりません。一意でない場合は、列名の一覧を指定する必要があります。
  • WITH 句項目の列が宣言されている場合は、クエリー式によって展開された列の数に一致する必要があります。
  • 各 WITH 句項目には一意の名前を指定する必要があります。
  • オプションの no_inline ヒントは、クエリー式が参照されている場所のインラインビューとして置き換えないようにするオプティマイザーを示しています。ソースクエリーで必要な共通テーブルの複数の評価には、no_inline を使用できます。
  • オプションの マテリアル化 ヒントでは、共通テーブルを Data Virtualization の一時的なテーブルとして作成する必要があります。これにより、共通テーブルの単一の評価が強制されます。
注記

WITH 句も最適化の対象であり、後続のクエリーでは必要ありませんが、そのエントリーは処理されないことがあります。

注記

一般的なテーブルは、プッシュダウンの可能性を強化するために積極的にインライン化されます。共通テーブルがメインのクエリーで 1 回のみ参照されている場合は、インラインになる可能性が高くなります。共通のテーブルを使用してプッシュ以外の相関サブクエリーの n 多重処理を行わない場合などに、no_inlinematerialize ヒントを含める必要がある場合があります。

WITH n (x) AS (select col from tbl) select x from n, n as n1
Copy to Clipboard Toggle word wrap

WITH n (x) AS /*+ no_inline */ (select col from tbl) select x from n, n as n1
Copy to Clipboard Toggle word wrap

再帰的な共通テーブル式

再帰的な共通テーブル式は、それ自体を参照して、再帰的または反復方式で完全な共通テーブルを構築するために許可される一般的なテーブル式の特別な形式です。

用途

WITH name [(column, ...)] AS (anchor query expression UNION [ALL] recursive query expression) ...
Copy to Clipboard Toggle word wrap

再帰クエリー式は、名前で共通テーブルを参照できます。アンカーのクエリー式は、処理中に最初に実行されます。結果は共通のテーブルに追加され、再帰クエリー式の実行に対して参照されます。このプロセスは、中間の結果がなくなるまで、新しい結果に対して繰り返し行われます。

重要

再帰的でない共通テーブル式により、過剰な処理が発生する可能性があります。

デフォルトでは、再帰的な共通テーブル式の runaway 処理を防ぐために、処理は 10000 回に制限されます。プッシュされる再帰的な共通テーブル式はこの制限の対象ではありませんが、他のソース固有の制限が適用される可能性があります。セッション変数 teiid.maxRecursion を大きな整数値に設定することで、制限を変更できます。制限を超えると、例外が発生します。

再帰制限が処理の完了前に到達するため、以下の例は失敗します。

SELECT teiid_session_set('teiid.maxRecursion', 25);
WITH n (x) AS (values('a') UNION select chr(ascii(x)+1) from n where x < 'z') select * from n
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat