使用計算列最佳化 PostgreSQL 查詢
對於頻繁存取多個表的派生值的查詢,在目標表中建立計算列可顯著提高效能。 PostgreSQL 提供了多種方法來實現這一點。
視圖雖然提供查詢的邏輯表示,但對於效能關鍵場景來說並不理想,因為它們不物理儲存資料。
一個更好的解決方案是 PostgreSQL 的「生成列」(從版本 11 開始提供)。 STORED
產生的列直接在表中儲存計算值,提供與傳統列相同的效能。
對於較舊的 PostgreSQL 版本或不適合虛擬產生列的情況,您可以使用函數模擬計算列。 這些函數接受表類型作為輸入並傳回計算值,實際上充當偽列。
我們舉個例子來說明:
CREATE TABLE tbl_a (a_id int, col1 int, col2 int); INSERT INTO tbl_a VALUES (1,1,1), (2,2,2), (3,3,3), (4,4,4); CREATE TABLE tbl_b (b_id int, a_id int, colx int); INSERT INTO tbl_b VALUES (1,1,5), (2,1,5), (3,1,1) , (4,2,8), (5,2,8), (6,2,6) , (7,3,11), (8,3,11), (9,3,11);
使用函數建立偽列col3
:
CREATE FUNCTION col3(tbl_a) RETURNS int8 LANGUAGE sql STABLE AS $func$ SELECT sum(colx) FROM tbl_b b WHERE b.a_id = .a_id $func$;
使用屬性表示法 (tbl_a.col3
) 或函數表示法 (col3(tbl_a)
) 存取計算值,從而提供查詢彈性。 記得使用表別名來防止命名衝突。
使用計算列或產生函數可以最大限度地減少子查詢、簡化資料檢索並顯著提高查詢速度。 最佳方法取決於您的特定需求和 PostgreSQL 版本。 仔細考慮可確保高效的資料庫設計。
以上是如何在 PostgreSQL 中高效產生計算列以加快查詢速度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

本文討論了使用Drop Table語句在MySQL中放下表,並強調了預防措施和風險。它強調,沒有備份,該動作是不可逆轉的,詳細介紹了恢復方法和潛在的生產環境危害。

本文討論了在PostgreSQL,MySQL和MongoDB等各個數據庫中的JSON列上創建索引,以增強查詢性能。它解釋了索引特定的JSON路徑的語法和好處,並列出了支持的數據庫系統。

文章討論了使用準備好的語句,輸入驗證和強密碼策略確保針對SQL注入和蠻力攻擊的MySQL。(159個字符)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版