创建局部分区索引

在创建的水平分区索引后追加LOCAL关键字,即是局部分区索引,分区索引的存储信息,例如表空间都将继承于主索引的存储信息。

注意创建UNIQUE局部分区索引时,索引键不可以是表达式,且分区列必须构成 UNIQUE 索引的关键字列子集。例如表t1(c1 int, c2 int, c3 int),有分区键为(c1,c2),那么unique局部分区索引的索引键可以为(c1,c2)、(c2,c1)、(c1, c2, c3)或(c2,c1,c3)等,但不可以是(c1)。

示例1:范围分区表局部分区索引

--  清理环境
DROP TABLE u_tab;
DROP INDEX pti1;
DROP INDEX pti2;

-- 创建分区表
CREATE TABLE u_tab
(
    id NUMERIC, 
    name CHAR(20), 
    num NUMERIC
)
PARTITION BY RANGE (id)
(
    PARTITION p1 VALUES LESS THAN (10),
    PARTITION p2 VALUES LESS THAN (100)
);

CREATE UNIQUE INDEX pti1 ON u_tab(id,num) LOCAL;
CREATE UNIQUE INDEX pti2 ON u_tab(id,num,name) LOCAL;

--  删除表和索引
DROP INDEX pti1;
DROP INDEX pti2;
DROP TABLE u_tab CASCADE;

示例2:哈希分区表局部分区索引

--  清理环境
DROP TABLE u_tab;
DROP INDEX pti1;
DROP INDEX pti2;
DROP INDEX pti3;
DROP INDEX pti4;

-- 创建分区表
CREATE TABLE u_tab
(
    c1 INT, 
    c2 INT,
    c3 INT
)
PARTITION BY HASH(c1, c2)
PARTITIONS 4;

--前缀局部分区索引
CREATE INDEX pti1 ON u_tab(c1, c2) LOCAL;

--删除索引
DROP INDEX pti1;


--非前缀局部分区索引
CREATE INDEX pti2 ON u_tab(c2, c1) LOCAL;

--删除索引
DROP INDEX pti2;


--局部分区索引完全参考分区表的分区信息进行分区,默认分区键为分区表的分区键;
--所以,索引项可以完全独立于分区键;
CREATE INDEX pti3 ON u_tab(c3) LOCAL;

--删除索引
DROP INDEX pti3;


--为保证局部分区索引的唯一性,在创建唯一局部分区索引时,索引项需要包含分区键
CREATE UNIQUE INDEX pti4 ON u_tab(c2,c1) LOCAL;

--删除索引
DROP INDEX pti4;


--删除表
DROP TABLE u_tab CASCADE;