========================= REFRESH MATERIALIZED VIEW ========================= .. container:: refentry :name: SQL-REFRESHMATERIALIZEDVIEW .. container:: titlepage .. container:: refnamediv .. rubric:: REFRESH MATERIALIZED VIEW :name: refresh-materialized-view REFRESH MATERIALIZED VIEW — 替换一个物化视图的内容 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name [ WITH [ NO ] DATA ] .. container:: refsect1 :name: id-1.9.3.161.5 .. rubric:: 描述 :name: 描述 ``REFRESH MATERIALIZED VIEW``\ 完全替换一个 物化视图的内容。你必须是该物化视图的属主才能执行这个命令.旧的内容会被抛弃。如果指定了 ``WITH DATA``\ (或者作为默认值),支持查询将被执行以 提供新的数据,并且会让物化视图将处于可扫描的状态。如果指定了 ``WITH NO DATA``\ ,则不会生成新数据并且会让物化视图 处于一种不可扫描的状态。 ``CONCURRENTLY``\ 和\ ``WITH NO DATA`` 不能被一起指定。 .. container:: refsect1 :name: id-1.9.3.161.6 .. rubric:: 参数 :name: 参数 .. container:: variablelist ``CONCURRENTLY`` 对物化视图的刷新不阻塞在该物化视图上的并发选择。如果没有这个选项, 一次影响很多行的刷新将使用更少的资源并且更快结束,但是可能会阻塞 其他尝试从物化视图中读取的连接。这个选项在只有少量行被影响的情况 下可能会更快。 只有当物化视图上有至少一个\ ``UNIQUE``\ 索引(只用列名 并且包括所有行)时,才允许这个选项。也就是说,它不能是表达式索引或者包括\ ``WHERE``\ 子句。 当物化视图还未被填充时,这个选项不能被使用。 即使带有这个选项,对于任意一个物化视图一次也只能运行一个 ``REFRESH``\ 。 ``name`` 要刷新的物化视图的名称(可以被模式限定)。 .. container:: refsect1 :name: id-1.9.3.161.7 .. rubric:: 注解 :name: 注解 虽然用于未来的\ `CLUSTER `__\ 操作的默认索引会被保持, ``REFRESH MATERIALIZED VIEW``\ 不会基于这个属性排序产生 的行。如果希望数据在产生时排序,必须在支持查询中使用 ``ORDER BY``\ 子句。 .. container:: refsect1 :name: id-1.9.3.161.8 .. rubric:: 示例 :name: 示例 这个命令将使用物化视图\ ``order_summary``\ 定义中的查询 来替换该物化视图的内容,并且让它处于一种可扫描的状态: .. code:: programlisting REFRESH MATERIALIZED VIEW order_summary; 这个命令将释放与物化视图\ ``annual_statistics_basis``\ 相关 的存储并且让它变成一种不可扫描的状态: .. code:: programlisting REFRESH MATERIALIZED VIEW annual_statistics_basis WITH NO DATA; .. container:: refsect1 :name: id-1.9.3.161.9 .. rubric:: 兼容性 :name: 兼容性 ``REFRESH MATERIALIZED VIEW``\ 是一种 OushuDB 扩展。 .. container:: refsect1 :name: id-1.9.3.161.10 .. rubric:: 另见 :name: 另见 `CREATE MATERIALIZED VIEW `__, `ALTER MATERIALIZED VIEW `__, `DROP MATERIALIZED VIEW `__