从 table 中获取一定数量的行
Get certain number of rows from a table
我有一个很大的 table,它有 7 亿行和几十列。我需要它作为左 table.
执行左连接操作
不过,既然这么大,耗费的时间是承受不起的。所以我想分成几个较小的 tables 并以多处理方式执行任务。
我知道有 SSIS 包可用于此,但我不能使用它。
此外,我知道为每一行添加行 ID 是一种简单的方法,但不幸的是,我无法更改 table。
那么,我可以知道如何实现我的目标吗?
非常感谢。
创建一个#temp table,并将记录的子集插入其中,然后加入#temp table。您也可以根据需要在#temp table 中创建一个额外的 ID 列。
如果您需要使用 sql-脚本的特定行数,请使用 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;
使用 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
您可以获取任何范围内的记录。
我有一个很大的 table,它有 7 亿行和几十列。我需要它作为左 table.
执行左连接操作不过,既然这么大,耗费的时间是承受不起的。所以我想分成几个较小的 tables 并以多处理方式执行任务。
我知道有 SSIS 包可用于此,但我不能使用它。
此外,我知道为每一行添加行 ID 是一种简单的方法,但不幸的是,我无法更改 table。
那么,我可以知道如何实现我的目标吗?
非常感谢。
创建一个#temp table,并将记录的子集插入其中,然后加入#temp table。您也可以根据需要在#temp table 中创建一个额外的 ID 列。
如果您需要使用 sql-脚本的特定行数,请使用 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;
使用 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
您可以获取任何范围内的记录。