【问题标题】:How to optimize pgplsql function?如何优化 pgplsql 功能?
【发布时间】:2017-01-26 16:15:42
【问题描述】:

我有针对每一行触发的功能。它有下一条语句:

SELECT DocDate
  FROM Operation
  WHERE Operation.ID = New.OperationID
  INTO _DocDate;

EXECUTE PROCEDURE ChangeSaldo( _DocDate, ... );

每一行都属于父表Operation,我们从中获取DocDate
我们需要为每一行运行ChangeSaldo,并使用自己的_DocDate
这保证所有行都属于Operation表中的同一行

Postgres 会为每一行执行这个SELECT,还是这个语句会被缓存?
如果不缓存有没有办法优化SELECT所以只会执行一次?

【问题讨论】:

  • 您是否要针对您的DocDate 中的每个DocDate 值运行函数select?.. 请改写
  • @VaoTsun 完成。改写
  • 如果您认为重复运行该 SELECT 是一种浪费,那么有理由说,也许该逻辑一开始就不应该在触发器中。

标签: postgresql stored-procedures


【解决方案1】:

我计划创建stable 函数并将SELECT 放在那里。
由于stable 函数的性质,结果将被缓存

【讨论】:

  • 稍后我将在实现后用函数示例扩展答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多