Вместо использования RBAR rCTE используйте Tally.Вы можете использовать CTE, чтобы сделать это тоже.Таким образом, вы не будете страдать от проблемы максимальной рекурсии, и она будет намного быстрее:
WITH N AS (
SELECT N
FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL)) N(N)),
Tally AS(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS I
FROM N N1 --10
CROSS JOIN N N2 --100
CROSS JOIN N N3 --1000
CROSS JOIN N N4 --10000
)
SELECT *
FROM Tally;
С помощью приведенного выше примера вы можете продолжать увеличивать число CROSS JOIN
до N
в подсчете CTE, и выувеличит количество строк в 10 раз.