繁体   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