Teradata-テーブルタイプ
Teradataは、一時データを保持するために次のテーブルタイプをサポートしています。
- 派生テーブル
- 揮発性テーブル
- グローバル一時テーブル
派生テーブル
派生テーブルは、クエリ内で作成、使用、および削除されます。これらは、クエリ内に中間結果を格納するために使用されます。
例
次の例では、給与が75000を超える従業員のレコードを使用して派生テーブルEmpSalを作成します。
SELECT
Emp.EmployeeNo,
Emp.FirstName,
Empsal.NetPay
FROM
Employee Emp,
(select EmployeeNo , NetPay
from Salary
where NetPay >= 75000) Empsal
where Emp.EmployeeNo = Empsal.EmployeeNo;
上記のクエリを実行すると、給与が75000を超える従業員が返されます。
*** Query completed. One row found. 3 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo FirstName NetPay
----------- ------------------------------ -----------
103 Peter 83000
揮発性テーブル
揮発性テーブルは、ユーザーセッション内で作成、使用、および削除されます。それらの定義はデータディクショナリに保存されません。これらは、頻繁に使用されるクエリの中間データを保持します。構文は次のとおりです。
構文
CREATE [SET|MULTISET] VOALTILE TABLE tablename
<table definitions>
<column definitions>
<index definitions>
ON COMMIT [DELETE|PRESERVE] ROWS
例
CREATE VOLATILE TABLE dept_stat (
dept_no INTEGER,
avg_salary INTEGER,
max_salary INTEGER,
min_salary INTEGER
)
PRIMARY INDEX(dept_no)
ON COMMIT PRESERVE ROWS;
上記のクエリを実行すると、次の出力が生成されます。
*** Table has been created.
*** Total elapsed time was 1 second.
グローバル一時テーブル
グローバルテンポラリーテーブルの定義はデータディクショナリに保存され、多くのユーザー/セッションで使用できます。ただし、グローバル一時テーブルにロードされたデータは、セッション中にのみ保持されます。セッションごとに最大2000のグローバル一時テーブルを実体化できます。構文は次のとおりです。
構文
CREATE [SET|MULTISET] GLOBAL TEMPORARY TABLE tablename
<table definitions>
<column definitions>
<index definitions>
例
CREATE SET GLOBAL TEMPORARY TABLE dept_stat (
dept_no INTEGER,
avg_salary INTEGER,
max_salary INTEGER,
min_salary INTEGER
)
PRIMARY INDEX(dept_no);
上記のクエリを実行すると、次の出力が生成されます。
*** Table has been created.
*** Total elapsed time was 1 second.