我寫了一個遞歸函數,根據輸出我需要選擇不同的字段。我現在的問題是,如何多次執行此操作而不必多次調用該函數?我現在正在做的就是使用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
...
如何優化這個查詢和調用該函數只有一次? 在此先感謝!
有什麼功能的語言沒有什麼經驗? – 2010-02-18 13:51:02
語言是PL/pgSQL。 – stefita 2010-02-18 14:02:45
您接受使用IMMUTABLE的答案很奇怪,但您在評論中說您的函數「從另一個表中選擇了一個值,並且可以爲該特定ID進行更改」。我希望你沒有標記IMMUTABLE函數,因爲Postgres沒有說它緩存了不可變函數結果的時間。 – 2010-03-03 11:29:38