PostgreSQL 教程: 列出索引

九月 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;

部分输出为:

PostgreSQL List Indexes from a schema using SQL statement

要显示表的所有索引,请使用以下语句:

SELECT
    indexname,
    indexdef
FROM
    pg_indexes
WHERE
    tablename = 'table_name';

例如,要列出customer表的所有索引,请使用以下语句:

SELECT
    indexname,
    indexdef
FROM
    pg_indexes
WHERE
    tablename = 'customer';

这是输出:

PostgreSQL List Indexes from a table using SQL statement

如果要获取名称以字母c开头的表的索引列表,可以使用以下查询:

SELECT
    tablename,
    indexname,
    indexdef
FROM
    pg_indexes
WHERE
    tablename LIKE 'c%'
ORDER BY
    tablename,
    indexname;

下面显示了输出:

PostgreSQL List Indexes from tables

使用 psql 命令列出索引

如果您用psql来连接 PostgreSQL 数据库,并希望列出表的所有索引,可以使用 psql 命令 \d,如下所示:

\d table_name

该命令将返回有关表的所有信息,包括表的结构、索引、约束和触发器

例如,以下语句返回有关customer表的详细信息:

\d customer

输出是:

PostgreSQL List Indexes using psql

正如输出中清楚显示的那样,您可以在索引部分下找到表的索引。

在本教程中,您学习了如何通过查询pg_indexes视图来列出 PostgreSQL 数据库中的所有索引。