La copia de índices de hash y de unión entre versiones de Teradata Database tiene ciertas restricciones:
Para copiar un índice de unión o hash de una base de datos de origen a una de destino, especifique el atributo selection="included" del elemento index al definir el índice de unión o hash, como se muestra en el siguiente ejemplo:
<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>
Los parámetros y los valores posibles para los índices de unión y de hash se describen en la tabla siguiente.
Parámetro | Descripción |
---|---|
colocate | Nombre de la ubicación, solo para mapa disperso. |
index_database | Nombre de base de datos en la cual reside el índice de hash o de unión. |
index_type | Tipo de índice. Los valores válidos son:
|
mapa | Nombre del mapa del objeto. |
name | Nombre del índice de unión o de hash. |
selection | El elemento que indica si el índice de unión o hash se ha copiado. Los valores válidos son:
|
Si está copiando un índice de combinación o hash junto con las tablas asociadas y las tablas asociadas se van a cambiar de nombre o reubicar, el índice join o hash se crea en el tabla renombrado o reubicado en el destino.
El ejemplo de código siguiente crea un índice de unión de varias tablas comprimidas, 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 );
El ejemplo de código siguiente crea un índice de unión de varias tablas sin comprimir, 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 );
El ejemplo de código siguiente crea un índice de unión agregado, 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 );
El ejemplo de código siguiente crea un índice de hash, Orders_HI.
CREATE HASH INDEX west1000.Orders_HI ,NO FALLBACK ,CHECKSUM = DEFAULT (o_custid ,o_totalprice ,o_orderdate ) ON west1000.Orders ;
- Si el objeto que se está copiando no existe en la base de datos de destino, se crea. Si el objeto existe en la base de datos de destino, se sobrescribe, a menos que la propiedad overwrite_existing_objects se establezca como false. En ese caso, se producirá un error en el momento de la creación.
- Copiar una tabla que existe en el destino con un índice de unión o hash asociado sobrescribirá la tabla de destino y volverá a crear el índice de unión o hash en la tabla recién copiada.