从表中获取特定数量的行

时间:2015-01-07 11:04:08

标签: sql sql-server

我有一张大桌子,里面有7亿行和数十列。我需要它来执行左连接操作作为左表。

然而,由于它如此之大,耗时的时间是无法承受的。因此,我想分成几个较小的表,并以多处理方式执行任务。

我知道SSIS包可用于此,但我不得不使用它。

另外,我知道这是一种向每行添加行ID的简单方法,但不幸的是,我无法对表进行更改。

那么,我可以知道如何实现我的目标吗?

非常感谢。

3 个答案:

答案 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)

使用CTErow_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列,以满足您的需求。