如何列出为 postgres 中的表创建的索引

Posted

技术标签:

【中文标题】如何列出为 postgres 中的表创建的索引【英文标题】:How to list indexes created for table in postgres 【发布时间】:2016-09-16 16:59:29 【问题描述】:

您能告诉我如何检查在 postgresql 中为某个表创建了哪些索引吗?

【问题讨论】:

【参考方案1】:

您可以在 pg_indexes 视图中找到所有与索引相关的信息。有时表是某些架构/所有者的一部分,或者可能在PostgreSQL Rename Table 中会更改表名。所以先找出谁是表的所有者,然后查询表上的索引。

select schemaname, tablename from pg_tables where tablename='TEST'; select tablename,indexname from pg_indexes where tablename='TEST'; 要么 select * from pg_indexes where tablename='SCHEMA_NME.TABLE_NAME'; **您也可以使用 \d:** \d 表名;

【讨论】:

【参考方案2】:

你可以使用这个查询:

select tablename,indexname,tablespace,indexdef from pg_indexes where tablename = 'your_table_name';

tablenamepg_indexes 中的一个字段,您可以通过匹配 'your_table_name 处的用户定义表来获得准确的索引' 在 WHERE 子句中。这将为您提供所需的详细信息。

【讨论】:

【参考方案3】:

如果你在 psql 中,那么:

\d tablename

显示索引、外键和引用...

【讨论】:

【参考方案4】:

视图pg_indexes 提供对数据库中每个索引的有用信息的访问,例如。

select *
from pg_indexes
where tablename not like 'pg%';

【讨论】:

以上是关于如何列出为 postgres 中的表创建的索引的主要内容,如果未能解决你的问题,请参考以下文章

如何创建自定义函数来分析 postgres 中的表

如何在 Postgres 中的 JSON 字段上创建索引?

你如何列出 docker 容器中的卷?

如何在 PostgreSQL 中列出具有相应大小的表的所有索引?

Postgres维护的正确顺序

REDSHIFT:如何生成一系列数字而不在 redshift (Postgres 8.0.2) 中创建名为“数字”的表?