Sql-Server

SQL Server 可以在單個 INSERT 語句中將多少行處理到一個表中?

  • December 14, 2018

為了說明我的問題,以下是一個查詢,檢測尚未插入數據倉庫的訂單 ID 並插入它們:

With NewOrders 
As
(   
   Select OrderID From Orders
   Except
   Select OrderID From FactOrders
)
Insert Into FactOrders(OrderID, OrderDate, CustomerId)
   Select OrderID, OrderDate, CustomerId From Orders
   Where OrderID in (Select OrderID from NewOrders);

假設第一次執行查詢並Orders包含 4 億行或更多行:

SQL Server 可以在一條INSERT語句中處理這麼多行嗎?

如果沒有,我應該如何進行?INSERT我應該限制語句中提取的行數嗎?INSERT引擎在一條語句中可以處理多少行?

根據文件,每個表儲存的行數的唯一限制如下

僅受可用資源限制

可能包括哪些本地資源?

  • 記憶
  • 數據庫數據文件中用於將插入的數據物理寫入的空間
  • 數據庫日誌文件中的空間
  • TempDB 中的空間(數據和日誌)

至於單個 SELECT 語句可以提取多少,我找不到與此直接相關的任何文件,但我認為將其與上述完全相同是安全的。

引用自:https://dba.stackexchange.com/questions/225003