在大块中选择CTE?

时间:2010-12-07 19:38:57

标签: sql-server common-table-expression

我想使用SQL Server 2008(递归?)CTE在4亿行表中选择100万行。结果将被写入文本文件,我知道但不是CTE分块部分。

该表在DateTime列上具有良好的覆盖索引,但没有PK。

有人有任何建议吗?

感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY <column>) as PK_Key窗口函数创建伪PS,但这不是最理想的,因为将为每个选择订购整个表。

更好的方法是使用您拥有的索引来填充您的语句,而不是恰好在1m行上。也就是说,检查一些数据并选择一个可以达到你想要的任意限制。如果一个月内大约有1m行,那么对于每个数据检索操作,都要获得数月的数据。你甚至不需要它的CTE,因为从它的声音你不处理递归数据结构。