openGauss/MogDB分区表的GLOBAL和LOCAL索引区别索引列

2024年 5月 17日 84.3k 0

一、现象

使用工具查看主键索引,发现有两列,但是创建索引明明只有一列
openGauss/MogDB分区表的GLOBAL和LOCAL索引区别-索引列-1
openGauss/MogDB分区表的GLOBAL和LOCAL索引区别-索引列-2

数据库版本:
openGauss/MogDB分区表的GLOBAL和LOCAL索引区别-索引列-3

二、现象原因

该索引为分区表的主键索引,为local索引,在创建索引时除了表的指定列,还包含tableoid列

三、补充测试

1、普通表

普通表的主键约束:只包含主键列
openGauss/MogDB分区表的GLOBAL和LOCAL索引区别-索引列-4

2、分区表主键也是分区键

分区表主键也是分区键,主键索引是local,只包含主键列

openGauss/MogDB分区表的GLOBAL和LOCAL索引区别-索引列-5

3、分区表主键非分区键

分区表主键但不是分区键,主键索引是glocal,主键索引中除了包含主键列,还有tableoid列,主键约束:PRIMARY KEY (id) INCLUDE (tableoid)
openGauss/MogDB分区表的GLOBAL和LOCAL索引区别-索引列-6

4、分区表的global和local索引

  • local索引的索引列:创建索引时指定的表的字段
  • global索引的索引列:除了创建索引时指定的表的字段,还有tableoid

openGauss/MogDB分区表的GLOBAL和LOCAL索引区别-索引列-7

四、结论

  • 普通表和分区表local索引的索引列:创建索引时指定的表的字段
  • 分区表global索引的索引列:除了创建索引时指定的表的字段,还有tableoid
    • 如果索引时主键,则约束定义:PRIMARY KEY (id) INCLUDE (tableoid)
    • 其他索引根据pg_get_constraintdef() 函数查询结果为空

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论