考虑以下将表
cur_acct 和
new_acct 合并以及使用基于表达式的分布方案的示例。表
cur_acct 最初创建为一个分片表,并且在
dbspace
dbsp1 和
dbsp2 中有分片。该示例的第一个语句显示表
cur_acct
是以基于表达式的分布方案创建的。该示例的第二个语句在
dbsp3 中创建表
new_acct ,而没有分片存储策略。第三个语句合并了表
cur_acct 和
new_acct
。每个表中的表结构(列)都是相同的。
CREATE TABLE cur_acct (a int) FRAGMENT BY EXPRESSION
a < 5 in dbsp1, a >= 5 and a < 10 in dbsp2;
CREATE TABLE new_acct (a int) IN dbsp3;
ALTER FRAGMENT ON TABLE cur_acct ATTACH new_acct AS a>=10;
当您更改分片后检查 sysfragments 系统目录表时,您可以看到表 cur_acct 按表达式分片为三个 dbspace。关于
sysfragments 系统目录表的其它信息,请参阅 GBase 8s SQL 参考指南 。
除了简单的范围规则,您也可以使用 ATTACH 子句,通过哈希或仲裁规则按表达式分片。关于您可以在基于表达式的分布方案中用到的所有表达式类型的讨论,请参阅
通过 EXPRESSION 分片。
Warning: 当您指定一个日期值作为参数的缺省值时,请确保对年份指定 4 位数字,而非 2 位数字。当指定 2 位数字的年份时,环境变量 DBCENTURY
可能不使用希望的缺省值。有关更多信息,请参阅 GBase 8s SQL 参考指南。