ITPub博客

首页 > 数据库 > 国内数据库 > 循序渐进丨MogDB 数据库分区表的GLOBAL和LOCAL索引区别之索引列

循序渐进丨MogDB 数据库分区表的GLOBAL和LOCAL索引区别之索引列

原创 国内数据库 作者:云和恩墨 时间:2024-08-12 15:47:52 0 删除 编辑

现象

创建表:
    create table include_global_test (id int,col1 varchar(2))
    
    partition by range(col1)
    ( partition p1 values less than ('10') ) ;
    ALTER TABLE include_global_test ADD CONSTRAINT pk_include_global_test PRIMARY KEY (id);
    使用工具查看主键索引,发现有两列,但是创建索引明明只有一列:

    数据库版本:

    现象原因

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

    补充测试

    01 普通表

    普通表的主键约束: 只包含主键列

    02 分区表主键也是分区键

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

    03 分区表主键非分区键

    分区表主键但不是分区键,主键索引是global,主键索引中除了包含主键列,还有tableoid列,主键约束: PRIMARY KEY (id) INCLUDE (tableoid)

    04 分区表的global和local索引

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

    结论

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

    来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29715045/viewspace-3024789/ ,如需转载,请注明出处,否则将追究法律责任。

    请登录后发表评论 登录
    全部评论

    注册时间:2014-06-19

    • 博文量
      183
    • 访问量
      346691