2017-01-26 4 views
0

私は各行に対してトリガされる機能を持っています。これは、次の文があります。pgplsql関数を最適化する方法は?

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

EXECUTE PROCEDURE ChangeSaldo(_DocDate, ...); 

各行は、我々はDocDateをフェッチ親テーブルOperationに属します。
は、我々はして各行に対するChangeSaldoを実行する必要がある独自のすべての行が

ウィルPostgresは行ごとに、このSELECTを実行するか、この文がキャッシュされますOperationテーブル内の同じ行に属していることが保証されている_DocDate

キャッシュされていない場合は、SELECTを最適化する方法があるので、一度だけ実行されますか?

+0

はあなた 'SELECT'に各' DocDate'値に対して関数 'ChangeSaldo'を実行したいですか?.. Doneを –

+0

@VaoTsunを言い換えてください。言い換えれば –

+1

そのSELECTを繰り返し実行することは、理由があると無駄だと思うなら、そのロジックが最初にトリガに入るべきではないかもしれません。 –

答えて

-1

私はstable関数を作成し、その中にSELECTを入れることを計画しています。
stable機能の性質の結果がキャッシュされます ので

+0

後で私はそれを実装した後、関数の例で答えを拡張します –

関連する問題