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

47 postgresql

你能告诉我如何检查postgresql中为某些表创建的索引吗?

kli*_*lin 59

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

select *
from pg_indexes
where tablename not like 'pg%';
Run Code Online (Sandbox Code Playgroud)


dwi*_*ins 33

如果你在psql中,那么:

\d tablename
Run Code Online (Sandbox Code Playgroud)

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

  • 对于区分大小写的表名称,请使用 `\d "Tablename"` (3认同)
  • 比构建查询更容易使用! (2认同)

小智 15

您可以使用此查询:

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

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


小智 9

命令

\di
Run Code Online (Sandbox Code Playgroud)

将列出当前模式的所有索引。


小智 8

您可以在视图中找到所有与索引相关的信息pg_indexes。有时,表可能是某些模式(“所有者”)的一部分,或者过去可能有不同的名称(请参阅:PostgreSQL 重命名表)。

因此,首先找出表的架构(“所有者”):

SELECT schemaname, tablename FROM pg_tables WHERE tablename='table_name';
Run Code Online (Sandbox Code Playgroud)

然后使用以下任一查询查询表上的索引:

SELECT tablename, indexname FROM pg_indexes WHERE tablename='table_name';
-- or 
SELECT * FROM pg_indexes WHERE tablename='schema_name.table_name';
Run Code Online (Sandbox Code Playgroud)

作为上述所有内容的替代方案,您还可以使用 \d:

\d table_name;
Run Code Online (Sandbox Code Playgroud)