簡體   English   中英

在postgresql中預先計算用戶定義的函數

[英]precomputing user-defined functions in postgresql

我試圖在每行的基礎上預先計算用戶定義的函數。 我的想法是將JSON對象作為其中一個字段中的文本對象,我想從中解析出其他一些“字段”,這些字段可以像查詢其他任何真實字段一樣在查詢中返回。 但是,解析JSON的開銷很大。 有沒有辦法以加速查詢的方式預先計算這個解析功能?

請不要爭辯說數據庫中不應該有JSON作為文本; 我知道利弊。

首先,您可能對即將推出的PostgreSQL 9.2的JSON數據類型感興趣(現在很快就會發布)。

至於您的問題,您正在尋找物化視圖 (或更簡單的形式:表中的冗余預計算列)。 “物化視圖”只是既定術語,而不是PostgreSQL數據庫中的特殊對象。 基本上,您創建一個具有預先計算值的冗余表,您可以在某些事件或及時刷新。

搜索該術語將為您提供一些答案。

除了物化視圖之外,請記住PostgreSQL還可以索引函數的輸出,因此您可以執行以下操作:

CREATE INDEX my_foo_bar_udf_idx ON foo (bar(baz));

僅當UDF標記為不可變時才有效,輸出僅依賴於參數。 這使您可以選擇針對查詢參數運行函數,然后掃描索引而不是表。 它不符合所有用例,但它確實滿足了許多用例,並且它通常可以為您節省實現視圖的麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM