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.