17.00 - 17.05 - フェーズの削減によるパフォーマンスの向上 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL外部ルーチン プログラミング

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1147-170K-JPN
Language
日本語 (日本)

Tbl.getPhaseEx()オプションを使用すると、変数モードのテーブル関数を開発しているときに、テーブルのフェーズの遷移をより細かく制御できます。これらのオプションを使用して、テーブル関数の実行時に必要な、フェーズの遷移の数を減らすことができます。それにより、UDF呼び出しの回数が少なくなり、テーブル関数のパフォーマンスを向上することになります。

次に示すテーブルでは、Tbl.getPhaseEx()オプションを使用した場合と、使用しなかった場合の各行に必要なフェーズの遷移の数を比較しています。これらのフェーズは、P (TBL_PRE_INIT)、I (TBL_INIT)、B (TBL_BUILD)、B EOF (TBL_BUILD_EOFではなく、EOFの合図を送るTBL_BUILD)、F (TBL_FINI)、およびE (TBL_END)です。Xは出力行に対する入力のスケール係数です。

処理モード Tbl.getPhaseEx()オプションが使用されない場合に必要なフェーズ 特定のTbl.getPhaseEx()オプションが使用された場合に必要なフェーズ
1:1

(1ロー入力: 1ロー出力)

I, B, B EOF, F TBL_NEWROWオプションが設定されている場合はB。
1:M

(1行入力:複数行出力)

I, B*X, B EOF, F TBL_NEWROWEOFオプションが設定されている場合はB * X。
M:1

(複数行入力:1行出力)

I, B EOF, F TBL_NEWROW | TBL_LASTROWオプションが設定されている場合はB * X。

例えば、次のようになります。

1:1処理モードでは、TBL_NEWROWオプションを使用して、TBL_BUILD呼び出しごとに新しい行を取得します。

tbl.getPhaseEx(phase, tbl.TBL_NEWROW);

この場合、関数は次に示すフェーズをパス スルーします。



1:M処理モードでは、TBL_NEWROWEOFオプションを使用して、EOFの合図が送られたときに新しい行を取得します。

tbl.getPhaseEx(phase, tbl.TBL_NEWROWEOF);

この場合、関数は次に示すフェーズをパス スルーします。



M:1処理モードでは、以下を使用します。

tbl.getPhaseEx(phase, tbl.TBL_LASTROW | tbl.TBL_NEWROW);

M:1と1:Mを組み合わせた処理モードは、次のように使用します。これは、EOFまで新しい行を渡しません。

tbl.getPhaseEx(phase, tbl.TBL_LASTROW |tbl.TBL_NEWROWEOF);

この場合、関数は次に示すフェーズをパス スルーします。



詳細は、getPhaseEx(int[] phase, int option)を参照してください。