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
日本語 (日本)

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

次に示すテーブルでは、FNC_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は出力行に対する入力のスケール係数です。

処理モード FNC_GetPhaseExオプションが使用されない場合に必要なフェーズ 特定のFNC_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呼び出しごとに新しい行を取得します。

FNC_Mode mode = FNC_GetPhaseEx(&thePhase, TBL_NEWROW);

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


TBL_NEWROWオプションは、TBL_BUILD呼び出しで新しい行を取得します。

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

FNC_Mode mode = FNC_GetPhaseEx(&thePhase, TBL_NEWROWEOF);

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


TBL_NEWROWEOFオプションは、EOFの合図が送られたときに新しい行を取得します。

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

FNC_Mode mode = FNC_GetPhaseEx(&thePhase, TBL_LASTROW | TBL_NEWROW);

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

FNC_Mode mode = FNC_GetPhaseEx(&thePhase, TBL_LASTROW | TBL_NEWROWEOF);

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


TBL_NEWROWEOFオプションは、EOFで新しい行を渡します。

詳細については、FNC_GetPhaseExを参照してください。