有人可以帮助我获取postgres中的LOCALITY
,PARTITIONED
,UNIQUENESS
列,就像我们从oracle的USER_PART_INDEXES
中获得的那样,它显示了分区索引的对象级分区信息吗?
我尝试在postgres中使用pg_indexes
,但找不到LOCALITY
,PARTITIONED
,UNIQUENESS
细节。
oracle :
SELECT I.INDEX_NAME INDEX_NAME
FROM USER_PART_INDEXES PI,USER_INDEXES I
WHERE I.TABLE_NAME = test
AND LOCALITY = 'LOCAL'
AND PARTITIONED = 'YES'
AND UNIQUENESS = 'NONUNIQUE'
AND INDEX_TYPE <> P_EXCLUDE_TYPE
AND I.TABLE_NAME = PI.TABLE_NAME
AND I.INDEX_NAME = PI.INDEX_NAME
PostgreSQL不是Oracle,如果你不试图将他们的系统目录视为同样的话,你的生活会更容易。
这两个系统表是您想要的,但不要只假设两个系统中的行为相同:
Postgres还没有全局索引,因此分区表上的所有索引都是“本地”索引。
索引的唯一性存储在pg_index.indisunique
中
要在Postgres中查找特定表的所有非唯一索引,您可以执行以下操作:
select ic.relname as index_name
from pg_index ix
join pg_class ic on ix.indexrelid = ic.oid
where ix.indrelid = 'test'::regclass
and not ix.indisunique;