在创建的索引使用了与对表所用的相同的分段表达式时,使用与对表所用的相同分布方案来对索引进行分段。
(col1 >= 5) (col1 = 5 OR col1 > 5)
尽管这两个表达式在代数上是等价的,但它们不是相同的表达式。
CREATE TABLE tb1 (a INT)
FRAGMENT BY EXPRESSION
(a <= 10) IN tabdbspc1,
(a <= 20) IN tabdbspc2,
(a <= 30) IN tabdbspc3;
CREATE INDEX idx1 ON tb1 (a)
FRAGMENT BY EXPRESSION
(a <= 10) IN idxdbspc1,
(a <= 20) IN idxdbspc2,
(a <= 30) IN idxdbspc3;
CREATE TABLE tb2 (a INT CHECK a> 30 AND a<= 40)
IN tabdbspc4;
CREATE INDEX idx2 ON tb2(a)
IN idxdbspc4;
ALTER FRAGMENT ON TABLE tb1
ATTACH tb2 AS (a <= 40);
有关如何确保现有表分段和新表分段之间不发生数据移动的更多信息,请参阅确保在连接分段时不发生数据移动。