【发布时间】:2019-08-22 04:31:25
【问题描述】:
我有这个查询来获取表上的索引列表:
SELECT
ns.nspname as schema_name,
tab.relname as table_name,
cls.relname as index_name,
am.amname as index_type,
idx.indisprimary as is_primary,
idx.indisunique as is_unique
FROM
pg_index idx
INNER JOIN pg_class cls ON cls.oid=idx.indexrelid
INNER JOIN pg_class tab ON tab.oid=idx.indrelid
INNER JOIN pg_am am ON am.oid=cls.relam
INNER JOIN pg_namespace ns on ns.oid=tab.relnamespace
WHERE ns.nspname = @Schema AND tab.relname = @Name
它似乎工作正常。但现在我需要查询列列表,但我无法理解系统视图的工作原理。
具体我要找的是:
- [与第一个查询匹配的索引名称或 ID]
- 索引中的顺序
- 列名
- 升序或降序
- 排序的列或包含的列
理想情况下,我想一次获取给定表的所有索引的上述项目。
请注意,我寻找的不仅仅是列名。
【问题讨论】:
-
@Andreas 这不是完全匹配,因为我要求的不仅仅是列名。
标签: postgresql database-indexes database-metadata