【GaussDB】GaussDB怎么查询分区表的索引信息?

mimimiquan 秀才 2022-11-23 09:36:49

GaussDB怎么查询分区表的索引信息?

...全文
849 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gauss松鼠会 探花 2022-11-24
  • 打赏
  • 举报
回复

1.pg_partition里有

2.或者用pg_get_tabledef查表定义,包含索引创建语句

3.或者查询PG_INDEXES视图

Gauss松鼠会 探花 2022-11-24
  • 打赏
  • 举报
回复

分区表上的索引分为:本地(局部)索引(local index) 和 全局索引(global index)

SELECT
n.nspname AS schemaname, --schema名称
c1.relname AS tablename, -- 表名
c2.relname AS indexname, -- 索引名称
s.conname AS conname, -- 约束名称
pg_get_constraintdef(s.oid) AS constraintdef, -- 如果是约束,输出约束定义
CASE WHEN s.conname IS NULL THEN pg_get_indexdef(x.indexrelid) END AS indexdef -- 如果不是约束,输出索引定义
FROM pg_index x
INNER JOIN pg_class c1 ON c1.oid = x.indrelid
INNER JOIN pg_class c2 ON c2.oid = x.indexrelid
INNER JOIN pg_namespace n ON n.oid = c1.relnamespace
LEFT JOIN pg_constraint s ON s.conrelid = x.indrelid AND s.conindid = x.indexrelid
WHERE (x.indisprimary = true OR x.indisunique = true)
AND c1.relkind = 'r'
AND x.indrelid >= 16384 AND x.indexrelid > 16384
AND (c1.reloptions IS NULL OR c1.reloptions::text not like '%internal_mask%') -- 排除内置对象
ORDER BY schemaname, tablename, indexname

尝试使用此sql

79,539

社区成员

发帖
与我相关
我的任务
社区描述
汇集数据库的爱好者和关注者,大家共同学习、探索、分享数据库前沿知识和技术,像松鼠一样剥开科学的坚果;交流Gauss及其他数据库的使用心得和经验,互助解决问题,共建数据库技术交流圈。
数据库数据仓库 企业社区 北京·海淀区
社区管理员
  • Gauss松鼠会
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎大家同时关注Gauss松鼠会专家酷哥。

https://www.zhihu.com/people/ku-ge-78-98

试试用AI创作助手写篇文章吧