PostgreSQL 实体化视图的使用

news/2024/7/9 19:44:16 标签: postgresql, 数据库

上周的教程中,通过 DVD Rental Database 示例,让我们了解了在 PostgreSQL 中创建实体化视图的过程。正如我们所了解的,PostgreSQL 实体化视图提供了一种强大的机制,通过预计算和存储查询结果集为物理表来提高查询性能。接下来的内容将涵盖实体化视图相关的其他操作,比如刷新视图、对其执行查询,以及在不再需要时删除视图。与上一篇文章一样,我们将同时讨论DML 语句和如何通过 Navicat GUI 来实现相同的结果。

PostgreSQL 的实体化视图介绍

刷新实体化视图

实体化视图的数据需要定期刷新,以反映底层表中的任何更改。你可以使用以下命令来刷新视图视图:

REFRESH MATERIALIZED VIEW mv_category_revenue;

在 Navicat 中,我们可以刷新并完全地替换实体化视图的内容,鼠标右击(或在 macOS 上使用 control-click)对象选项卡中的实体化视图,并在弹出的菜单中选择“刷新实体化视图与”->“数据”或者“没有数据”:

refresh_materialized_view (53K)

查询实体化视图

现在我们有一个实体化视图,我们可以想查询其他表那样查询它:

SELECT * FROM mv_category_revenue;

这个查询将返回电影类别及其总收入,在不需要重复地联接多张表的情况下,可以快速和高效地检索信息。

在 Navicat 中,你可以在查询编辑或使用查询创建工具来编写查询。在查询编辑器中,只需敲击几下按键,自动补全功能便可识别出实体化视图!

materialized_view_in_autocomplete_list (62K)

实体化视图也包含在对象窗格的查询创建工具中。你可以从对象窗格中拖拽实体化视图到图表窗格中,或者在对象窗格中双击它。

materialized_view_query (107K)

删除实体化视图

如果你不再需要实体化视图,你可以使用 DROP MATERIALIZED VIEW 命令来删除它。这是删除 mv_category_revenue 视图的语句:

DROP MATERIALIZED VIEW mv_category_revenue;

这是在 Navicat 中删除实体化视图的几种方法。第一种方法是:

  • 在主窗口的工具栏中选择“实体化视图”。
  • 然后,在对象列表中选择你想要删除的实体化视图。在对象工具栏中会显示几个可选的按钮,其中包括删除实体化视图按钮:

    delete_materialized_view_button (63K)

  • 点击删除实体化视图按钮将显示一个对话框,你可以在其中确认你确实希望删除已选的实体化视图。

第二个方法是,在主窗口的导航窗格中或在对象列表中右击实体化视图(或在 macOS 上使用 control-click),并在弹出的菜单中选择“删除实体化视图”:

delete_materialized_view_menu_command (40K)

总结

本文中,我们学习了如何执行一些实体化视图相关的操作,包括刷新视图、对其执行查询,以及删除视图。在每个案例中,我们都讨论了 DML 语句以及如何在 Navicat GUI 中实现相同的结果。

往期回顾 

Navicat 16 已支持 Redis

Navicat 16 已支持华为云 GaussDB

Navicat 16 已支持蚂蚁集团 OceanBase 全线数据库

Navicat 常见技术教程

Navicat 入选中国信通院发布的《中国数据库产业图谱(2023)》 


http://www.niftyadmin.cn/n/5392190.html

相关文章

TensorFlow中的分布式深度学习

在处理复杂问题和大规模深度学习问题时,分布式深度学习为我们提供了突破口。它允许我们利用多个设备和计算资源的力量,更好地训练我们的模型。讨论这个话题时,不得不提的是 TensorFlow,它通过 tf.distribute 包为分布式学习提供了…

docker搭建Postgresql主备集群

docker搭建Postgresql主备集群 搭建主库 docker-compose.yaml配置文件如下: version: "3.1" services:postgres:image: postgres:12.8container_name: pg_masterrestart: alwaysenvironment:POSTGRES_USER: postgresPOSTGRES_PASSWORD: postgresPOSTGR…

迅速了解Ascii、GBK、Unicode、UTF-8、BCD各种编码格式的由来及关系!

《嵌入式工程师自我修养/C语言》系列——迅速了解Ascii、GBK、Unicode、UTF-8、BCD各种编码格式的由来及关系 一、Ascii编码二、GBK编码三、Unicode编码四、UTF-8编码五、BCD编码六、其他网友的总结 快速学习嵌入式开发其他基础知识?>>>>>>>&g…

matlab实现汉明窗低通滤波器,汉宁窗带通滤波器,布莱克曼窗高通滤波器,矩形窗的带阻滤波器。

1 汉明窗低通滤波器 : 在Matlab中使用汉明窗设计低通滤波器可以通过fir1函数实现。汉明窗通常用于设计滤波器,可以提供更突出的频率特性。 下面是一个示例代码,演示如何在Matlab中使用汉明窗设计低通滤波器: % 定义滤波器参数 fs = 1000; % 采样频率 cutOffFreq = 100; …

【Redis】Redis的数据分布算法

一共有五种算法,分别为:哈希算法、一致性哈希算法、带有限负载的一致性哈希算法、虚拟节点一致性哈希算法、虚拟槽分区 哈希算法 思想:根据某个key的值或者key 的哈希值与当前可用的 master 节点数取模,根据取模的值获取具体的服…

2.25基础会计学

资本公积是指由股东投入、但不能构成“股本”或“实收资本”的资金部分。 盈余公积是指公司按照规定从净利润中提取的各种积累资金。 所以区别在于盈余公积来自净利润。 借贷其实就是钱从哪来和到哪去的问题,来源是贷,流向是借。比如购入9w原材料&…

TF-IDF,textRank,LSI_LDA 关键词提取

目录 任务 代码 keywordExtract.py TF_IDF.py LSI_LDA.py 结果 任务 用这三种方法提取关键词,代码目录如下, keywordExtract.py 为运行主程序 corpus.txt 为现有数据文档 其他文件,停用词,方法文件 corpus.txt 可以自己…

MySQL运维实战(7.2) MySQL复制server_id相关问题

作者:俊达 主库server_id没有设置 主库没有设置server_id Got fatal error 1236 from master when reading data from binary log: Misconfigured master - server_id was not set主库查看server_id mysql> show variables like server_id; ----------------…