非重叠分段,多列

数据库服务器使用仲裁规则来定义基于多个列的非重叠分段。

下图显示两个列的非重叠分段的示例。

图: 两个列上的非重叠分段的示例

...
FRAGMENT BY EXPRESSION
0<a AND a<=10 AND b IN (‘E', ‘F', ‘G') IN dbsp1,
0<a AND a<=10 AND b IN (‘H', ‘I', ‘J') IN dbsp2,
10<a AND a<=20 AND b IN (‘E', ‘F', ‘G') IN dbsp3,
10<a AND a<=20 AND b IN (‘H', ‘I', ‘J') IN dbsp4,
20<a AND a<=30 AND b IN (‘E', ‘F', ‘G') IN dbsp5,
20<a AND a<=30 AND b IN (‘H', ‘I', ‘J') IN dbsp6;

图: 两个列上的非重叠分段的图解示例


在周围的文本中描述此图。

如果您使用了这种类型的分布方案,数据库服务器可以对等式搜索消除分段,而不是对范围搜索。 由于所有 INSERT 操作和许多 UPDATE 操作可以执行等式搜索,因而此能力仍然有用。在表达式中应避免使用 REMAINDER 子句。如果使用 REMAINDER 子句,那么数据库服务器始终不能消除剩余分段。

如果使用基于单个列的表达式无法获得足够的粒度,可以接受此备选方案。