全局索引

最近更新时间:2024-10-18 16:29:32

我的收藏

功能介绍

支持对分区表创建全局二级索引。

支持版本

内核版本 TXSQL 8.0 3.1.15及以上。

适用场景

在分区表中通过创建全局二级索引,来提高分区表查询的效率和性能。

注意事项

DDL 使用限制(以下是 官网文档 的 partition_option 中不支持的 DDL 操作)。
DISCARD PARTITION 和 IMPORT PARTITION:因为全局索引和 partition 不在一个表空间中。
COALESCE PARTITION:当表为无主键表时,执行此操作全局索引会出现重复记录。
REORGANIZE PARTITION:可能导致全局索引出现重复数据。
EXCHANGE PARTITION:全局索引和 partition 不在一个表空间中,全局索引无法交换数据。
REBUILD PARTITION:无主键分区表可能出现重复记录。
REPAIR PARTITION:可能导致全局索引丢失数据。
全局索引不能作为主键索引,包括隐式转为主键的情况(不包含主键时,unique 的全局索引无法创建)。
unique 的全局索引必须包含所有的分区字段。
全局索引暂不支持需要 copying data 的分区级别 DDL。
全局索引不支持压缩表(修改 KEY_BLOCK_SIZE)及透明页压缩。
全局索引不支持非分区表,非分区表创建全局索引时会自动转为普通索引。
包含全局索引的 hash 分区不支持 add、coalesce 操作。
包含全局索引的分区表在 truncate 分区时必须使用 alter table truncate partition with global index 的语法。
全局索引中不能包含 Generated Columns
全局索引的 AHI 被默认禁止。
推荐使用 simple select 方式来访问全局索引,不建议使用特殊用法。

使用说明

建立全局索引表

create table t1 (
a bigint unsigned not null PRIMARY KEY,
b varchar(16) not null,
pad varchar(128) not null,
key key_b(b) global -- 增加 global 关键字,在建表中指定全局索引
)
PARTITION BY RANGE(a) (
PARTITION p0 VALUES LESS THAN (10000000),
PARTITION p1 VALUES LESS THAN (20000000),
PARTITION p2 VALUES LESS THAN (30000000),
PARTITION p3 VALUES LESS THAN (MAXVALUE)
);

在已经存在的表中建立全局索引

create index key_b on t1(b) global; -- 增加 global 关键字,在建索引中指定全局索引
alter table t1 add index key_b(b) global;