バージョンが異なるTeradata Database間で結合インデックスおよびハッシュ インデックスをコピーする場合は、一定の制限があります。
結合インデックスまたはハッシュ インデックスをソース データベースからターゲット データベースにコピーするには、結合インデックスまたはハッシュ インデックスを定義するときに、次のコード例のように、index要素のselection="included"属性を指定します。
<indices> <index selection= "included"> <name>Orders_HI</name> <index_database>west1000</index_database> <map>sparsemap4amps1</map> <colocate>sparsecol2</colocate> <index_type>HASH_INDEX</index_type> </index> </indices>
次のテーブルでは、結合インデックスとハッシュ インデックスのパラメータと使用可能な値について説明します。
パラメータ | 説明 |
---|---|
colocate | スパース マップ専用のコロケーション名。 |
index_database | 結合インデックスまたはハッシュ インデックスが存在するデータベース名。 |
index_type | インデックスの種類。 有効な値は次のとおりです。
|
map | オブジェクト マップ名。 |
name | 結合またはハッシュ インデックス名。 |
selection | 結合インデックスおよびハッシュ インデックスをコピーするかどうかを示す構成要素。 有効な値は次のとおりです。
|
MAPS機能のパラメータ、map、colocateは、Teradata Database 16.10以降を使用するターゲット システムでしかサポートされていません。
関連付けられたテーブルと共に結合またはハッシュ インデックスをコピーし、関連付けられたテーブルの名前を変更または再配置する場合、結合またはハッシュインデックスは、ターゲットの名前を変更または再配置されたテーブルに作成されます。
次のコード例では、圧縮複数テーブル結合インデックスCust_Ord_JIを作成しています。
CREATE JOIN INDEX west1000.Cust_Ord_JI ,NO FALLBACK ,CHECKSUM = DEFAULT AS SELECT (west1000.C.c_custid ,west1000.C.c_lname ),(west1000.O.o_orderid , west1000.O.o_orderstatus ,west1000.O.o_orderdate ) FROM west1000.Customer C INNER JOIN west1000.Orders O ON west1000.C.c_custid = west1000.O.o_custid ) PRIMARY INDEX ( c_custid );
次のコード例では、非圧縮複数テーブル結合インデックスCust_Ord_J2を作成しています。
CREATE JOIN INDEX west1000.Cust_Ord_JI2 ,NO FALLBACK ,CHECKSUM = DEFAULT AS SELECT west1000.C.c_custid ,west1000.C.c_lname,west1000.O.o_orderid , west1000.O.o_orderstatus ,west1000.O.o_orderdate FROM west1000.Customer C INNER JOIN west1000.Orders O ON west1000.C.c_custid = west1000.O.o_custid ) PRIMARY INDEX ( c_custid );
次のコード例では、集約結合インデックスMonthly_Sales_JIを作成しています。
CREATE JOIN INDEX west1000.Monthly_Sales_JI ,NO FALLBACK ,CHECKSUM = DEFAULT AS SELECT COUNT( * ) (FLOAT, NAMED CountStar ),west1000.Daily_Sales.item_id (NAMED Item ), EXTRACT(YEAR FROM (west1000.Daily_Sales.sales_date ))(NAMED Yr ), EXTRACT(MONTH FROM (west1000.Daily_Sales.sales_date ))(NAMED Mon ), SUM(west1000.Daily_Sales.sales )(FLOAT, NAMED Sum_of_Sales ) FROM west1000.Daily_Sales GROUP BY west1000.Daily_Sales.item_id (NAMED Item ), EXTRACT(YEAR FROM (west1000.Daily_Sales.sales_date ))(NAMED Yr ), EXTRACT(MONTH FROM (west1000.Daily_Sales.sales_date ))(NAMED Mon ) PRIMARY INDEX ( Item );
次のコード例では、ハッシュ インデックスOrders_HIを作成しています。
CREATE HASH INDEX west1000.Orders_HI ,NO FALLBACK ,CHECKSUM = DEFAULT (o_custid ,o_totalprice ,o_orderdate ) ON west1000.Orders ;
結合インデックスおよびハッシュ インデックスをコピーする際は、以下を考慮する必要があります。
- コピーするオブジェクトがターゲット データベースに存在しない場合は、ターゲット データベース上に作成されます。オブジェクトがターゲット データベースに存在する場合は、overwrite_existing_objectsプロパティがfalseに設定されていないとオブジェクトは上書きされます。 その場合、作成タイムエラーが生成されます。
- 結合インデックスまたはハッシュ インデックスを持つテーブルがターゲットに存在する場合に、そのテーブルをコピーすると、ターゲット テーブルが上書きされ、新しくコピーされたテーブルに対して結合インデックスまたはハッシュ インデックスが再作成されます。
TeradataとHadoopシステム間で、結合インデックスとハッシュ インデックスをコピーすることはできません。