PostgreSQL: лучший способ вызывать одну и ту же функцию несколько раз в одном запросе? - PullRequest
0 голосов
/ 16 сентября 2011

В PostgreSQL, как лучше всего вызывать одну и ту же функцию несколько раз в одном запросе?

Пример:

SELECT a.id, 
       sum_one(a.id) AS "Sum_one",
       sum_two(a.id) AS "Sum_two",
       (sum_one(a.id )+sum_two(a.id)) AS "Sum_three"
  FROM a

Где sum_one() и sum_two() - функции. Я повторяю вызов sum_one() и sum_two(). Это замедлит запросы в больших базах данных.

Я хочу избежать следующего утверждения.

(sum_one(a.id )+sum_two(a.id)) AS "Sum_three"

Как мне это сделать в PostgreSQL?

Ответы [ 2 ]

3 голосов
/ 16 сентября 2011

Вы должны установить свою волатильность функции на Stable.

Подробнее о волатильности функций .

CREATE OR REPLACE FUNCTION myFunc(prm_MyParam integer)
  RETURNS numeric AS
$BODY$
BEGIN
  {...}

END;$BODY$
  LANGUAGE plpgsql STABLE;
0 голосов
/ 16 сентября 2011

Использовать подзапрос:

SELECT
    "Sum_one",
    "Sum_two",
    ("Sum_one" + "Sum_two") AS "Sum_three"
FROM (
    SELECT sum_one("A"."id") AS "Sum_one", sum_two("A"."id") AS "Sum_two" FROM A
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...