필자는 재귀 함수를 작성했으며 출력에 따라 다른 필드를 선택해야합니다. 내 질문은 지금, 어떻게 한 번 이상 함수를 호출하지 않고도 여러 번이 작업을 수행 할 수 있습니까? 내가 지금하고있는 일은 단지 CASE WHEN...
조건을 사용하고 함수가 반환 할 때마다 검사하는 것입니다. (이것은 단지 의사 코드와 실제 아무것도하지 않는, 그냥 이해의)PostgreSQL 조건부 선택
SELECT
id,
(CASE WHEN (function(id) > 0)
THEN field1
ELSE field2
END) as value1,
(CASE WHEN (function(id) > 0)
THEN field3
ELSE field4
END) as value2,
(CASE WHEN (function(id) > 0)
THEN field5
ELSE field6
END) as value3
FROM table1
...
내가이 쿼리를 최적화하고 한 번만 함수를 호출 할 수있는 방법
? 미리 감사드립니다.
과 경험이 없다? –
언어는 PL/pgSQL입니다. – stefita
당신이 IMMUTABLE을 사용하는 답을 받아 들인 것은 이상하지만, 당신의 기능이 "다른 테이블에서 값을 선택하고 그 특정 ID에 대해 변경 될 수있다"는 의견을 말한다. Postgres는 불변 함수의 결과를 캐시하는 시간을 알려주지 않기 때문에 IMMUTABLE 함수를 표시하지 않았기를 바랍니다. –