PostgreSQL 实体化视图的使用

news/2024/11/28 22:36:43/

上周的教程中,通过 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.ppmy.cn/news/1360287.html

相关文章

音频的“隐形保镖”——音频数字水印

在互联网时代,多媒体数字资源可以快捷地传播和获取,但同时也导致了数字音频产品的非法扩散、非法拷贝和非法篡改猖獗,数字音频产品的完整性和版权保护问题越来越凸显。文档和图像可以添加水印,音频同样可以添加水印,让…

Postgresql源码(123)事务提交时三段资源释放分析ResourceOwnerRelease

0 总结 三段释放原因:因为如果先释放锁,没有释放一些共享资源(比如pin住的buffer),别人拿到锁后发现我们仍然持有一些资源,就会有问题。所以三阶段释放主要是以锁为分界线,先释放锁保护的资源&…

idea在工具栏中显示快速创建包和类的图标

一、效果图 点击需要创建包或者类的位置,在点击对用的图标就可以快速创建类或者包了。 二、设置 步骤一 View-->Appearance-->Toolbar 步骤二 File-->Settings-->Appearance & Behavior-->Menus and Toolbars-->Main Toolbar-->----…

【xss跨站漏洞】xss漏洞利用工具beef的安装

安装环境 阿里云服务器,centos8.2系统,docker docker安装 前提用root用户 安装docker yum install docker 重启docker systemctl restart docker beef安装 安装beef docker pull janes/beef 绑定到3000端口 docker run --rm -p 3000:3000 janes/beef …

芯科科技与Arduino携手推动Matter普及化

双方的合作可助力开发人员在两分钟内将新开发板配置入网 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB)日前宣布,公司与开源硬件和软件领域的…

JAVAEE初阶 JVM(一)

JVM的热门话题 一. JVM中的内存区域划分1.经典笔试题. 二. JVM的类加载机制 一. JVM中的内存区域划分 1.经典笔试题. 二. JVM的类加载机制

Linux 开启防火墙 --- FirewallD is not running 问题修复

问题 在配置SSL认证后,需要放开防火墙的443端口,出现了FirewallD is not running错误 [rootxxx ~]# firewall-cmd --zonepublic --add-port443/tcp --permanent FirewallD is not running解决 只需要开启防火墙即可。 【1】先通过systemctl status fir…

通过platform总线驱动框架编写LED灯的驱动,编写应用程序测试

mydev.c #include <linux/init.h> #include <linux/module.h> #include <linux/of_gpio.h> #include <linux/gpio.h> #include <linux/platform_device.h> #include <linux/mod_devicetable.h>// 创建功能码 #define LED_ON _IO(l, 1) #d…