在Teradata中使用varchar列作为分区以加速截断

在Teradata中使用varchar列作为分区以加速截断,teradata,Teradata,我有一个Teradata表和两列company\u name varchar(500)和case\u name varchar(500) 这两个分区的值限制在数百个级别。但它不是由我控制的。我不能预先定义它们的值 截断指定的公司名称和案例名称的所有数据是一项日常操作。所以我想使用这两列作为分区 是否支持这样做?如果在TD中按分区截断数据会有帮助吗?如果不支持这一点。通过两个varchar列截断数据是否有最佳做法?当(主要)基于访问这些列时,其中company\u name='foo'和case\

我有一个Teradata表和两列
company\u name varchar(500)
case\u name varchar(500)

这两个分区的值限制在数百个级别。但它不是由我控制的。我不能预先定义它们的值

截断指定的
公司名称
案例名称
的所有数据是一项日常操作。所以我想使用这两列作为分区


是否支持这样做?如果在TD中按分区截断数据会有帮助吗?如果不支持这一点。通过两个varchar列截断数据是否有最佳做法?

当(主要)基于
访问这些列时,其中company\u name='foo'和case\u name='bar'
可以应用这样的计算

PRIMARY INDEX ( PIcol)
PARTITION BY
   Range_N(HashBucket(HashRow(company_name,case_name)) MOD 65533 BETWEEN 0 AND 65532 EACH 1)

从company\u name='foo'和case\u name='bar'的位置删除将访问单个分区,但这不是一个快速路径删除,它将是暂时的日志记录。

当对这些列的访问(主要)基于
where company\u name='foo'和case\u name='bar'
时,您可以应用这样的计算

PRIMARY INDEX ( PIcol)
PARTITION BY
   Range_N(HashBucket(HashRow(company_name,case_name)) MOD 65533 BETWEEN 0 AND 65532 EACH 1)

从company_name='foo'和case_name='bar'中删除
delete将访问单个分区,但它不是FastPath delete,它将是临时日志。

您是否仅在这些列上使用相等值访问该表?@dnoeth它是一个因子表,大约有100个其他列您是否仅在这些列上使用相等值访问该表?@dnoeth它是一个因子表,大约有100个其他列