没有循环的行生成

Rows generation without loops

Microsoft 展示了非常有趣的演示 (https://www.youtube.com/watch?v=oEpJB87Xg9U),其中他们为一个空 table

生成了 500 万行

如我所见,没有循环或对其他 table 的 500 万行的引用。我希望这里有 10 行。我在这里错过了什么?

FROM 子句使用旧式连接语法,a CTE 指定了 9 次。这实际上是 10 行 CTE 的 CROSS JOIN 笛卡尔积,因此生成 10*10*10*10*10*10*10*10*10 行,但由于 [=13 仅返回 5000000 =] 子句。

请参阅 this answer 了解使用更新的 CROSS JOIN 语法的此技术的示例,它在我的机器上大约 6 分钟内生成了 20 亿行。