可以将两个或更多个非分段表组合到单个分段表中。这些非分段表必须具有完全相同的表结构,并且必须存储在独立的数据库空间中。要将非分段表组合到一起,请使用 ALTER FRAGMENT 语句的 ATTACH 子句。
例如:假定有三个非分段表 account1、account2 和 account3,并且将这三个表分别存储在数据库空间 dbspace1、dbspace2 和 dbspace3 中。 所有这三个表具有完全相同的结构,并且要将这三个表组合到一个表中,该表是通过公共列 acc_num 上的表达式进行分段的。
您要将 acc_num 小于或等于 1120 的行存储在 dbspace1 中。acc_num 大于 1120 但小于或等于 2000 的行存储在 dbspace2 中。最后,acc_num 大于 2000 的行将存储在 dbspace3 中。
ALTER FRAGMENT ON TABLE tab1 ATTACH tab1 AS acc_num <= 1120, tab2 AS acc_num > 1120 and acc_num <= 2000, tab3 AS acc_num > 2000;
结果是单个表 tab1。另外两个表 tab2 和 tab3 已被消耗掉,它们不再存在。
有关如何使用 ALTER FRAGMENT 语句的 ATTACH 和 DETACH 子句来提高性能的信息,请参阅《GBase 8s 性能指南》。