首页 > 解决方案 > 获取物化视图的约束和索引

问题描述

查询以获取 Postgres 中所有物化视图的所有索引和所有约束。以下查询仅返回表上的索引。

SELECT indexname, indexdef 
FROM pg_indexes 
WHERE schemaname = 'public' AND tablename = 'table'

标签: sqlpostgresqlindexingmaterialized-views

解决方案


该视图提供了对数据库中每个索引的pg_indexes有用信息(以及物化视图的索引)的访问。您可以查找以仅过滤掉物化视图 ( ):pg_classrelkind = 'm'

select i.*
from pg_indexes i
join pg_class c
    on schemaname = relnamespace::regnamespace::text 
    and tablename = relname
where relkind = 'm'

 schemaname | tablename |    indexname    | tablespace |                             indexdef                             
------------+-----------+-----------------+------------+------------------------------------------------------------------
 public     | my_view   | my_view_id_idx  |            | CREATE UNIQUE INDEX my_view_id_idx ON my_view USING btree (id)
 public     | sen_view  | sen_view_id_idx |            | CREATE UNIQUE INDEX sen_view_id_idx ON sen_view USING btree (id)
(2 rows)

推荐阅读