我想使用SQL Server 2008(递归?)CTE在4亿行表中选择100万行。结果将被写入文本文件,我知道但不是CTE分块部分。
该表在DateTime列上具有良好的覆盖索引,但没有PK。
有人有任何建议吗?
感谢。
答案 0 :(得分:2)
您可以使用ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY <column>) as PK_Key
窗口函数创建伪PS,但这不是最理想的,因为将为每个选择订购整个表。
更好的方法是使用您拥有的索引来填充您的语句,而不是恰好在1m行上。也就是说,检查一些数据并选择一个可以达到你想要的任意限制。如果一个月内大约有1m行,那么对于每个数据检索操作,都要获得数月的数据。你甚至不需要它的CTE,因为从它的声音你不处理递归数据结构。