一、现象
使用工具查看主键索引,发现有两列,但是创建索引明明只有一列
数据库版本:
二、现象原因
该索引为分区表的主键索引,为local索引,在创建索引时除了表的指定列,还包含tableoid列
三、补充测试
1、普通表
普通表的主键约束:只包含主键列
2、分区表主键也是分区键
分区表主键也是分区键,主键索引是local,只包含主键列
3、分区表主键非分区键
分区表主键但不是分区键,主键索引是glocal,主键索引中除了包含主键列,还有tableoid列,主键约束:PRIMARY KEY (id) INCLUDE (tableoid)
4、分区表的global和local索引
- local索引的索引列:创建索引时指定的表的字段
- global索引的索引列:除了创建索引时指定的表的字段,还有tableoid
四、结论
- 普通表和分区表local索引的索引列:创建索引时指定的表的字段
- 分区表global索引的索引列:除了创建索引时指定的表的字段,还有tableoid
- 如果索引时主键,则约束定义:PRIMARY KEY (id) INCLUDE (tableoid)
- 其他索引根据pg_get_constraintdef() 函数查询结果为空