如何列出所有索引及其类型(BTREE、BRIN、HASH 等...)

max*_*ire 6 postgresql catalogs system-tables postgresql-9.6

我正在查询 Postgresql 9.6.4 中的系统目录

获取表的结果集及其索引很简单,我缺少的是索引类型(BTREE、BRIN 等)。我似乎无法在系统目录中的任何位置找到索引类型。

如何查询目录以获取索引列表及其类型?

max*_*ire 15

Postgresql 中的索引类型存储在pg_am目录表中。因此,要使用索引类型(或 PostgreSQL 调用的访问方法(“am”))获取所有表及其索引的列表,您可以运行以下命令

SELECT tab.relname, cls.relname, am.amname
FROM pg_index idx 
JOIN pg_class cls ON cls.oid=idx.indexrelid
JOIN pg_class tab ON tab.oid=idx.indrelid
JOIN pg_am am ON am.oid=cls.relam;
Run Code Online (Sandbox Code Playgroud)