2011-07-22 68 views

回答

10

在SQL Server中,BCP輸入記錄與傳統的插入語句截然不同。 SQL如何決定處理事情取決於許多因素,有些是大多數開發人員從未考慮的事情,例如數據庫設置爲使用哪種恢復模式。

bcp使用與BULK INSERT和SqlBulkCopy類相同的功能。

更多詳細的 http://msdn.microsoft.com/en-us/library/ms188365.aspx

的底線是,這些批量操作數比正常操作少的數據,並有指示SQL Server忽略對未來數據的傳統制衡的能力。所有這些東西一起起作用使其更快。

+0

有趣。我猜如果我使用SQLBulkCopy類,那麼我會得到相同的功能...這可能是我去的路線 –

3

我知道bcp和普通插入之間的主要區別是bcp不需要爲每個單獨的事務保留單獨的事務日誌條目。

+0

所以有沒有辦法關閉這種日誌記錄,當我做一個正常的插入? –

+0

@Tom有辦法解決這個問題,但試試 –

8

它作弊。

它對內部知識非常熟悉,並且能夠將輸入數據更直接地映射到內部。它可以跳過其他重量級操作(如解析,優化,事務,日誌記錄,推遲索引,隔離)。它可以做出適用於普通插入sql語句不能的每行數據的假設。

基本上,它能夠跳過使數據庫成爲數據庫的大部分功能,然後在本身結束後進行清理。

+3

只是想補充一點,它也會跳過桌子上的任何觸發器,除非你不告訴它。 – HLGEM