我有一張擁有700萬行和數十列的大表。我需要它作爲左表執行左連接操作。從表格中獲取一定數量的行
但是,由於它太大,耗時已經超出了實惠。所以我想分成幾個較小的表格並以多處理方式執行任務。
我知道有SSIS包可用於此,但我受限制不使用它。
另外,我知道這是一個簡單的方法來添加一個行ID到每個行,但不幸的是,我不能改變表。
那麼,我可以知道如何實現我的目標嗎?
非常感謝。
我有一張擁有700萬行和數十列的大表。我需要它作爲左表執行左連接操作。從表格中獲取一定數量的行
但是,由於它太大,耗時已經超出了實惠。所以我想分成幾個較小的表格並以多處理方式執行任務。
我知道有SSIS包可用於此,但我受限制不使用它。
另外,我知道這是一個簡單的方法來添加一個行ID到每個行,但不幸的是,我不能改變表。
那麼,我可以知道如何實現我的目標嗎?
非常感謝。
使用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
您可以獲取任何範圍的記錄。
創建一個#temp表,並將記錄的一個子集插入它,然後加入到#temp表。您可以在#temp表中創建一個額外的ID列以滿足您的需要。
如果您需要使用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;
試試'CTE',它可能適合你。 – Bharadwaj
@Bharadwaj嗨,謝謝你的提示,你能告訴我一個例子嗎?謝謝。 – ChangeMyName