17.00 - 17.05 - インデックスに対する条件としての非確定UDFの使用 - 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
日本語 (日本)

非確定UDFとは、入力が同じでも常に同じ結果を戻すとは限らないUDFのことです。CREATE FUNCTIONまたはREPLACE FUNCTION文にDETERMINISTIC句が指定されていない場合、またはNOT DETERMINISTIC句が指定されている場合、UDFは非確定と見なされます。非確定UDFは、各選択行ごとに評価されるので、インデックス列の条件に非確定UDFが含まれている場合、全AMP操作が実行されることになります。

例えば、以下のテーブル定義があるとします。

CREATE TABLE t1
   (c1 INTEGER
   ,c2 VARCHAR(9))
PRIMARY INDEX ( c1 );

以下の関数定義があるとします。

CREATE FUNCTION UDF_RAN(LowerBound INTEGER, UpperBound INTEGER)
RETURNS INTEGER
LANGUAGE C
NO SQL
PARAMETER STYLE TD_GENERAL
NOT DETERMINISTIC
EXTERNAL;

以下のSELECT文には、UDF_RANという非確定UDFを呼び出すc1インデックス列の条件が含まれています。そのUDFが呼び出されると、その結果として全AMP操作が実行されることになります。

SELECT *
FROM t1
WHERE c1 = UDF_RAN(1,12);