在 Teradata 中使用 varchar 列作为分区来加速截断
Using varchar column as partition in Teradata to speedup truncate
我有一个 Teradata table 和两列 company_name varchar(500)
和 case_name varchar(500)
。
两个分区的值都限制在百级。但它不受我控制。而且我无法预先定义一组它们的值。
截断指定company_name
和case_name
的所有数据是日常操作。所以我想用这两列作为分区。
是否支持这样做?如果在 TD 中按分区截断数据会有帮助吗?如果不支持。是否有通过两个 varchar 列截断数据的最佳做法?
当对这些列的访问(主要)基于where company_name = 'foo' and case_name = 'bar'
时,您可以应用这样的计算
PRIMARY INDEX ( PIcol)
PARTITION BY
Range_N(HashBucket(HashRow(company_name,case_name)) MOD 65533 BETWEEN 0 AND 65532 EACH 1)
A delete from where company_name = 'foo' and case_name = 'bar'
将访问单个分区,但它不是 FastPath 删除,它将被临时记录。
我有一个 Teradata table 和两列 company_name varchar(500)
和 case_name varchar(500)
。
两个分区的值都限制在百级。但它不受我控制。而且我无法预先定义一组它们的值。
截断指定company_name
和case_name
的所有数据是日常操作。所以我想用这两列作为分区。
是否支持这样做?如果在 TD 中按分区截断数据会有帮助吗?如果不支持。是否有通过两个 varchar 列截断数据的最佳做法?
当对这些列的访问(主要)基于where company_name = 'foo' and case_name = 'bar'
时,您可以应用这样的计算
PRIMARY INDEX ( PIcol)
PARTITION BY
Range_N(HashBucket(HashRow(company_name,case_name)) MOD 65533 BETWEEN 0 AND 65532 EACH 1)
A delete from where company_name = 'foo' and case_name = 'bar'
将访问单个分区,但它不是 FastPath 删除,它将被临时记录。