九月 10, 2023
摘要:在本教程中,您将学习如何使用pg_indexes视图或psql命令列出 PostgreSQL 数据库中的索引。
目录
PostgreSQL 不提供类似SHOW INDEXES的命令,列出表或数据库索引信息。
但是,它确实为您提供了对pg_indexes视图的访问权限,以便您可以查询索引信息。
如果使用psql程序与 PostgreSQL 数据库交互,则可以使用\d命令查看表的索引信息。
使用 pg_indexes 视图列出索引
pg_indexes视图允许您访问 PostgreSQL 数据库中每个索引的有用信息。pg_indexes视图由五列组成:
- schemaname:存储包含表和索引的模式的名称。
- tablename:存储索引所属表的名称。
- indexname:存储索引的名称。
- tablespace:存储包含索引的表空间的名称。
- indexdef:以- CREATE INDEX语句的形式存储索引定义命令。
以下语句列出了当前数据库中public模式的所有索引:
SELECT
    tablename,
    indexname,
    indexdef
FROM
    pg_indexes
WHERE
    schemaname = 'public'
ORDER BY
    tablename,
    indexname;
部分输出为:

要显示表的所有索引,请使用以下语句:
SELECT
    indexname,
    indexdef
FROM
    pg_indexes
WHERE
    tablename = 'table_name';
例如,要列出customer表的所有索引,请使用以下语句:
SELECT
    indexname,
    indexdef
FROM
    pg_indexes
WHERE
    tablename = 'customer';
这是输出:

如果要获取名称以字母c开头的表的索引列表,可以使用以下查询:
SELECT
    tablename,
    indexname,
    indexdef
FROM
    pg_indexes
WHERE
    tablename LIKE 'c%'
ORDER BY
    tablename,
    indexname;
下面显示了输出:

使用 psql 命令列出索引
如果您用psql来连接 PostgreSQL 数据库,并希望列出表的所有索引,可以使用 psql 命令 \d,如下所示:
\d table_name
该命令将返回有关表的所有信息,包括表的结构、索引、约束和触发器。
例如,以下语句返回有关customer表的详细信息:
\d customer
输出是:

正如输出中清楚显示的那样,您可以在索引部分下找到表的索引。
在本教程中,您学习了如何通过查询pg_indexes视图来列出 PostgreSQL 数据库中的所有索引。