我有一张大桌子,里面有7亿行和数十列。我需要它来执行左连接操作作为左表。
然而,由于它如此之大,耗时的时间是无法承受的。因此,我想分成几个较小的表,并以多处理方式执行任务。
我知道SSIS包可用于此,但我不得不使用它。
另外,我知道这是一种向每行添加行ID的简单方法,但不幸的是,我无法对表进行更改。
那么,我可以知道如何实现我的目标吗?
非常感谢。
答案 0 :(得分:1)
如果您使用sql-script需要特定数量的行,请使用fetch-offset。
像这样:SELECT First Name + ' ' + Last Name FROM big_table ORDER BY First Name OFFSET 15 ROWS;
SELECT First Name + ' ' + Last Name FROM big_table ORDER BY First Name OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;
答案 1 :(得分:1)
使用CTE
和row_number()
;WITH cte_tbl AS
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY [First Name]) AS RowNumber
FROM your_table
)
SELECT * FROM cte_tbl
WHERE RowNumber < 100
您可以获取任何范围的记录。
答案 2 :(得分:-1)
创建一个#temp表,并将记录的子集插入其中,然后加入#temp表。您可以在#temp表中创建一个额外的ID列,以满足您的需求。