【发布时间】:2019-03-24 15:55:35
【问题描述】:
Microsoft 展示了一个非常有趣的演示 (https://www.youtube.com/watch?v=oEpJB87Xg9U),他们为一个空表生成了 500 万行
正如我所见,没有循环或对具有 500 万行的其他表的引用。我希望这里有 10 行。我在这里错过了什么?
【问题讨论】:
标签: sql-server common-table-expression data-generation
Microsoft 展示了一个非常有趣的演示 (https://www.youtube.com/watch?v=oEpJB87Xg9U),他们为一个空表生成了 500 万行
正如我所见,没有循环或对具有 500 万行的其他表的引用。我希望这里有 10 行。我在这里错过了什么?
【问题讨论】:
标签: sql-server common-table-expression data-generation
FROM 子句使用旧式连接语法,并指定了 9 次 a CTE。这实际上是 10 行 CTE 的 CROSS JOIN 笛卡尔积,因此生成了 10*10*10*10*10*10*10*10*10 行,但由于 TOP 子句仅返回 5000000。
请参阅this answer,了解使用更新的CROSS JOIN 语法的这种技术的示例,它在我的盒子上大约 6 分钟内生成了 20 亿行。
【讨论】: