PostgreSQL 的實體化視圖介紹

PostgreSQL 實體化視圖提供一個強大的機制,通過預先計算并將查詢結果集存儲為物理表來提高查詢性能。本教程將使用?DVD Rental Database?數據庫作為演示例子,指導你在 PostgreSQL中創建實體化視圖。

了解實體化視圖

實體化視圖是查詢結果集的快照,以物理表的形式存儲。與常規視圖不同,實體化視圖是虛擬的,每次被引用時都會執行底層查詢,實體化視圖能持久化數據,并通過定期刷新來提高查詢性能。

相比于頻繁的查詢執行,實體化視圖對于底層數據變化不頻繁的場景是非常有用的。這使得它們成為報告、數據倉庫和實時數據要求不嚴格的場景的理想選擇。

設置 DVD Rental 數據庫

在深入探討實體化視圖前,讓我們先來設置 DVD Rental 數據庫。它是 MySQL 常用的 Sakila 數據庫樣例的 PostgreSQL 版本。你可以從官方 PostgreSQL 教程網頁(PostgreSQL Sample Database)上下載 DVD Rental 數據庫。

數據庫文件為 ZIP 格式(dvdrental.zip),所以在加載數據庫樣例到 PostgreSQL 數據庫服務器前,你需要將它解壓縮為 dvdrental.tar。解壓為 .tar 文件后,創建名為“dvdrental”的新數據庫,然后執行 pg_restore 命令以將 .tar 文件內容填充到 dvdrental 數據庫中。

pg_restore -U postgres -d dvdrental D:\sampledb\postgres\dvdrental.tar

將上面的路徑替換為你系統上指向已解壓的 dvdrental.tar 路徑。

你可以點擊?此處?查看詳細的安裝說明。

創建實體化視圖

假設我們想創建一個實體化視圖,顯示每個電影類別產生的總收入。以下是操作步驟:

  • 連接你的 PostgreSQL 數據庫
  • 通過下面的 DML 語句創建實體化視圖:
CREATE MATERIALIZED VIEW mv_category_revenue AS
SELECTc.name AS category,SUM(p.amount) AS total_revenue
FROMcategory cJOIN film_category fc ON c.category_id = fc.category_idJOIN film f ON fc.film_id = f.film_idJOIN inventory i ON f.film_id = i.film_idJOIN rental r ON i.inventory_id = r.inventory_idJOIN payment p ON r.rental_id = p.rental_id
GROUP BYc.name;

例子中,我們將 DVD Rental 數據庫中多張表進行聯合,以計算每個電影類別的總收入。

在?Navicat For PostgreSQL(或?Navicat Premium)16:

    • 點擊“實體化視圖”按鈕,將顯示實體化對象列表,在對象工具欄中點擊“+ 新建實體化視圖”,將打開視圖設計器:

    • 在定義編輯器中輸入上述語句的 SELECT 部分:

    • 我們可以點擊“預覽”按鈕來檢查語句是否可以如期運行:

    • 點擊“保存”按鈕,完成創建新的實體化視圖。這將會彈出一個提示輸入實體化視圖名稱的對話框,根據上面的 CREATE MATERIALIZED VIEW 語句中的名稱,我們將它命名為“mv_category_revenue”:

    • 點擊對話框中的保存按鈕,Navicat 會將實體化視圖名稱從“無標題”改為我們提供的名稱。同時也會將新建的實體化視圖添加到左側導航窗格的實體化視圖列表中:

總結

在非實時數據場景下,PostgreSQL 實體化視圖是一個優化查詢性能的有用工具。通過預計算和存儲復雜查詢的結果,實體化視圖可以顯著提高分析和報告任務的響應時間。本教程中,我們學習了如何為 DVD Rental 數據庫創建實體化視圖,并展示了在真實場景中的實際應用。

往期回顧?

Navicat 16 已支持 Redis

Navicat 16 已支持華為云 GaussDB

Navicat 16 已支持螞蟻集團 OceanBase 全線數據庫

Navicat 常見技術教程

Navicat 入選中國信通院發布的《中國數據庫產業圖譜(2023)》?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697313.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697313.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697313.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker安裝PostGIS擴展

去docker倉庫查找你想要安裝的鏡像版本,并pull下來 我下載的版本: [rootlocalhost ~]# docker pull postgis/postgis:12-3.2運行容器 [rootlocalhost ~]# docker run --name postgis --privilegedtrue --restartalways -e POSTGRES_USER12345678 -e P…

【高德地圖】Android高德地圖初始化定位并顯示小藍點

&#x1f4d6;第3章 初始化定位并顯示小藍點 ?第1步&#xff1a;配置AndroidManifest.xml?第2步&#xff1a;設置定位藍點?第3步&#xff1a;初始化定位?完整代碼 ?第1步&#xff1a;配置AndroidManifest.xml 在application標簽下聲明Service組件 <service android:n…

FPS游戲之漫談截幀技術

什么是截幀技術 簡而言之就是截取當前屏幕的內容&#xff0c;然后一般是以圖片的形式存入本地 為什么需要這個技術 因為有需求 比如我們需要把我牛逼的戰績炫耀下&#xff0c;是不是以圖文的形式分享到朋友圈是不是最直觀&#xff1f;&#xff1f;&#xff1f; 在Unity引擎中…

Aigtek高壓放大器是什么東西做的

在許多電子應用中&#xff0c;需要將低電壓信號放大到較高電壓以滿足特定的需求。為了實現這個目標&#xff0c;高壓放大器被廣泛采用。高壓放大器是一種專用電子設備&#xff0c;使用特定的電路和器件來增益輸入信號的電壓。它通常由以下幾個主要組成部分構成。 電源供應 高壓…

Linux編譯器---gcc/g++使用詳解

目錄 前言 gcc/g介紹 gcc/g的編譯指令&#xff08;以gcc為例&#xff09; ?編輯 gcc選項 預處理(進行宏替換) 編譯&#xff08;生成匯編&#xff09; 匯編&#xff08;生成機器可識別代碼&#xff09; 鏈接&#xff08;生成可執行文件或庫文件&#xff09; 函數庫 概念 …

網絡金融治理模式下第三方支付風險與應對路徑

隨著經濟社會的高速發展&#xff0c;消費模式日益多樣化&#xff0c;其中&#xff0c;第三方支付作為一種便捷的消費支付模式&#xff0c;在順應時代發展潮流中應運而生。這種支付模式通過中國人民銀行批準&#xff0c;持有《支付業務許可證》&#xff0c;并與銀行簽約&#xf…

訓練yolov8+SAM的過程記錄

1-首先將拿到的數據集進行重新命名(dataset1:是經過校色之后裁剪的圖片;dataset2:原圖) 圖片文件從1.jpg開始命名的代碼: folder_path = rC:\Users\23608\Desktop\Luli_work\data\fanStudent\tongueseg\Fan\Fan\.jpg new_folder = rC:\Users\23608\Desktop\Luli_work\da…

stable diffusion官方版本復現

踩了一些坑&#xff0c;來記錄下 環境 CentOS Linux release 7.5.1804 (Core) 服務器RTX 3090 復現流程 按照Stable Diffusion的readme下載模型權重、我下載的是stable-diffusion-v1-4 版本的 1 因為服務器沒法上huggingface&#xff0c;所以得把權重下載到本地&#xff…

初識表及什么是數據表

一、了解表 1.1.概述 表是處理數據和建立關系型數據庫及應用程序的基本單元&#xff0c;是構成數據庫的基本元素之一&#xff0c;是數據庫中數據組織并儲存的單元&#xff0c;所有的數據都能以表格的形式組織&#xff0c;目的是可讀性強。 1.2.表結構簡述 一個表中包括行和列…

當項目經理的一定要考PMP嘛?

PMP資格認證并不是強制性要求&#xff0c;但強烈建議考慮獲取該資格&#xff01;首先讓我們來了解一下PMP是什么&#xff0c;然后再談談為什么建議考取PMP資格的理由。 PMP&#xff08;Project Management Professional&#xff09;是項目管理專業人員的資格認證。該認證由全球…

SCI一區 | Matlab實現GAF-PCNN-MSA格拉姆角場和雙通道PCNN融合注意力機制的多特征分類預測

SCI一區 | Matlab實現GAF-PCNN-MSA格拉姆角場和雙通道PCNN融合注意力機制的多特征分類預測 目錄 SCI一區 | Matlab實現GAF-PCNN-MSA格拉姆角場和雙通道PCNN融合注意力機制的多特征分類預測效果一覽基本介紹模型描述程序設計參考資料 效果一覽 基本介紹 1.【SCI一區級】Matlab實…

老子云3D資源服務與應用平臺詳解

老子云平臺定位 老子云目標客群 老子云平臺架構 老子云平臺價值 核心優勢 -AMRT標準格式 -自動模型輕量化 -持續精進的底層技術算法 -千萬級輕量化3D資源素材市場 功能服務 -格式轉換 -蒙皮動畫輕量化 -傾斜攝影輕量化 -效果編輯器 -應用編輯器 -3D OFD應用 -A3D PPT -3D資源…

力扣日記2.22-【回溯算法篇】47. 全排列 II

力扣日記&#xff1a;【回溯算法篇】47. 全排列 II 日期&#xff1a;2023.2.22 參考&#xff1a;代碼隨想錄、力扣 47. 全排列 II 題目描述 難度&#xff1a;中等 給定一個可包含重復數字的序列 nums &#xff0c;按任意順序 返回所有不重復的全排列。 示例 1&#xff1a; 輸…

SpringBoot中定義了Bean,但是為什么依賴注入的時候注入不了

背景&#xff1a; 擴展RedisTemplate的實現的時候寫了這樣一段代碼&#xff1a; public class BusinessRedisTemplate extends RedisTemplate<String, String> {private final String prefix "business";public BusinessRedisTemplate (RedisConnectionFact…

十八、圖像像素類型轉換和歸一化操作

項目功能實現&#xff1a;對一張圖像進行類型轉換和歸一化操作 按照之前的博文結構來&#xff0c;這里就不在贅述了 一、頭文件 norm.h #pragma once#include<opencv2/opencv.hpp>using namespace cv;class NORM { public:void norm(Mat& image); };#pragma once二…

智慧公廁是什么?智慧公廁是構建智慧城市的環境衛生基石

隨著城市化進程的不斷加速&#xff0c;城市人口密度和流動性也逐漸增大&#xff0c;對城市公共設施的需求與日俱增。而在這些公共設施中&#xff0c;公廁作為城市基礎設施中不可或缺的一環&#xff0c;對城市的環境衛生和市民生活質量起著舉足輕重的作用。如何提高公廁的管理效…

android studio 中使用kotlin語言 直接操作布局id

android studio 中使用kotlin語言 直接操作布局id 需要在 build.gradle 文件 引入 apply plugin: kotlin-android apply plugin: kotlin-android-extensions&#xff08;會自動生成&#xff0c;可忽略&#xff09;然后在 Activity 文件中 引入 對應的 layout 文件 如&#xff…

MacOs 圍爐夜話

文章目錄 一、安裝 Mac 一、安裝 Mac macOS是一套由蘋果開發的運行于Macintosh系列電腦上的操作系統。macOS是首個在商用領域成功的圖形用戶界面操作系統。 VM虛擬機怎么安裝mac os&#xff1f;&#xff08;全教程&#xff09; 虛擬機&#xff1a;VMware Workstation 17 pro W…

新書推薦:《分布式商業生態戰略:未來數字商業新邏輯與企業數字化轉型新策略》

近兩年&#xff0c;商業經濟環境的不確定性越來越明顯&#xff0c;市場經濟受到疫情、技術、政策等多方因素影響越來越難以預測&#xff0c;黑天鵝事件時有發生。在國內外經濟方面&#xff0c;國際的地緣政治對商業經濟產生著重大的影響&#xff0c;例如供應鏈中斷&#xff0c;…

Shopify配置項過多如何在代碼層面簡化輸出內容

在處理 Shopify 的配置項過多的情況下&#xff0c;可以通過在代碼層面簡化輸出內容來提高效率和可維護性。以下是一些方法&#xff1a; 1. 使用循環和條件語句 使用循環和條件語句來動態生成和輸出內容。通過遍歷配置項的列表或對象&#xff0c;可以根據條件決定是否輸出相應的…