【问题标题】:How do I discover the underlying query of a materialized view I created?如何发现我创建的物化视图的基础查询?
【发布时间】:2014-11-02 10:38:34
【问题描述】:

我在 Postgres 9.3 中创建了一个物化视图,但后来我丢失了创建它的基础 SELECT 查询。我想删除物化视图,重写查询以包含更多数据,然后创建同名但具有新基础查询的物化视图。

【问题讨论】:

    标签: postgresql materialized-views


    【解决方案1】:
    SELECT * FROM "pg_catalog"."pg_matviews"
    

    这就是您如何找到您创建的所有物化视图的列表。我以前从未使用或见过 pg_catalog 架构,而且我使用的 GUI Navicat 隐藏了包含 pg_catalog 的“系统项”。您可以在应用程序的首选项中关闭隐藏。

    【讨论】:

    • 或来自 psql 的 \d+ viewname。只需 \d viewname 给出列定义。
    【解决方案2】:

    只是:

    SELECT pg_get_viewdef('myview');
    

    来自您选择的客户。

    例如在psql:

    test=> CREATE MATERIALIZED VIEW fred AS SELECT x FROM generate_series(1,100) x;
    SELECT 100
    test=> \a\t
    Output format is unaligned.
    Showing only tuples.
    test=> SELECT pg_get_viewdef('fred');
     SELECT x.x
       FROM generate_series(1, 100) x(x);
    

    这适用于普通视图和物化视图。

    或者,正如 Richard 所说,使用 psql\d+,它在幕后调用 pg_get_viewdef

    【讨论】:

      猜你喜欢
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多