可以通过使用分区切换来避免在具有检查约束的附加分区上进行扫描。分区切换是指将分区中的数据移动到具有不同分区键值的分区中。以下是一个使用分区切换的示例:
CREATE TABLE sales ( year INT, month INT, amount DECIMAL(10,2), CHECK (year > 2000) ) PARTITION BY RANGE (year) ( PARTITION p0 VALUES LESS THAN (2001), PARTITION p1 VALUES LESS THAN (2002), PARTITION p2 VALUES LESS THAN (2003), PARTITION p3 VALUES LESS THAN MAXVALUE );
ALTER TABLE sales ADD PARTITION ( PARTITION p4 VALUES LESS THAN (2004) );
-- Move data from partition p3 to partition p4 ALTER TABLE sales REORGANIZE PARTITION p3 INTO ( PARTITION p4 VALUES LESS THAN (2004), PARTITION p3 VALUES LESS THAN MAXVALUE );
在此示例中,表 sales 具有检查约束(year > 2000)。通过将数据从具有较高年份的原始分区 p3 移动到分区 p4 中,我们避免了在 p3 上进行扫描。