我如何在postgres中查找与Oracle的USER_PART_INDEXES相同的LOCALITY,PARTITIONED,UNIQUENESS详细信息

时间:2019-02-18 10:47:56

标签: postgresql database-migration ef-migrations postgresql-9.5

有人可以帮我在postgres中获取LOCALITYPARTITIONEDUNIQUENESS列,就像我们从oracle的USER_PART_INDEXES获取列一样,该列显示了对象的分区信息分区索引?

我尝试在Postgres中使用pg_indexes,但找不到LOCALITYPARTITIONEDUNIQUENESS详细信息。

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

2 个答案:

答案 0 :(得分:0)

PostgreSQL不是Oracle,如果您不尝试将它们的系统目录视为相同,那么您的生活将会更加轻松。

这两个系统表是您所需要的,而不仅仅是假设两个系统中的行为相同:

答案 1 :(得分:0)

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;