分段消除的有效性

如果使用循环分布方案对表进行分段,那么数据库服务器不能消除分段。而且,不是所有基于表达式的分布方案都提供了相同的分段消除行为。

下表总结了基于表达式的分布方案和查询表达式的不同组合的分段消除行为。分段表中的分区不会影响下表中显示的分段消除行为。
表 1. 基于表达式的分布方案和查询表达式的不同类型的分段消除
查询(WHERE 子句)表达式的类型 单个列上的非重叠分段 单个列上的重叠或非邻接分段 多个列上的非重叠分段
范围 表达式 分段可以消除。 分段不能消除。 分段不能消除。
等式表达式 分段可以消除。 分段可以消除。 分段可以消除。

此表说明了分布方案可启用分段消除,但是分段消除的有效性取决于指定查询的 WHERE 子句。

例如:可以考虑用以下表达式进行分段的表:
FRAGMENT BY EXPRESSION
100 < column_a AND column_b < 0 IN dbsp1,
100 >= column_a AND column_b < 0 IN dbsp2,
column_b >= 0 IN dbsp3
如果 WHERE 子句具有以下表达式,那么数据库服务器不能从搜索中消除任何分段:
column_a = 5 OR column_b = -50
但是,如果 WHERE 子句具有以下表达式,那么数据库服务器可以消除数据库空间 dbsp3 中的分段:
column_b = -50
而且,如果 WHERE 子句具有以下表达式,那么数据库服务器还可以消除数据库空间 dbsp2dbsp3 中的两个分段:
column_a = 5 AND column_b = -50

分段表中的分区不会影响分段消除行为。