У меня есть несколько начальных строк в таблице. Я хотел бы изменить их с помощью рекурсивного вызова. В моем примере кода эта функция является простым умножением на два, и я хотел бы выполнить ее 5 раз:
WITH RECURSIVE cte (n,v) AS
(
-- initial values
SELECT 0,2
UNION ALL
SELECT 0,3
UNION ALL
-- generator
SELECT n + 1, v * 2 FROM cte WHERE n < 5
)
SELECT v FROM cte where n = 5;
Это работает, но моя проблема в том, что он только отфильтровывает ненужные значения в конце запроса. Если я начну с гораздо большего количества строк, это может ухудшить производительность, потому что у меня в памяти будет больше строк, чем нужно. Можно ли сохранить новейшие значения только в каждой итерации?
SQLFiddle: http://sqlfiddle.com/#!5/9eecb7/6761