2012-05-26 93 views
0

我有一個程序在C#插入4,500,000記錄到SQL使用ExecuteNoneQuery 並花費太長的時間插入 我需要一個快速的方式插入,最多需要約10分鐘但是當我通過管理工作室將另一張表的4,500,000條記錄插入到我的表中時,需要3分鐘如何快速插入450萬條記錄到SQL Server數據庫與C#

+2

請發佈您的代碼,以便其他人可以爲您發現性能問題。 –

+1

我不知道它是如何在'C#',但在Java中使用批'' – Sajmon

回答

5

SqlBulkCopy類設計用於快速插入大量數據。

但是,您需要了解,在這種大小下,磁盤訪問速度和網絡延遲/帶寬/飽和會發揮作用。

您從另一個表中填充另一個表的示例在這種情況下無效,因爲您在上覆制同一臺機器

+0

thnax我會測試,我會讓你知道 – Hamid

+0

非常好的答案謝謝 – Hamid

1

由於Oded已經說過,這裏的出發點是SqlBulkCopy。但是,如果您可以控制數據庫,則還應該檢查數據庫上的恢復模型是否設置爲簡單或「批量記錄」。如果沒有這個,你會用SQL Server創建日記條目。您還需要確保已設置TableLock的SqlBulkCopyOptions。

這兩個很簡單。使用SqlBulCopy BatchSize設置和事務模型(請參閱UseInternalTransaction)也可能值得一玩,但這些設置很難提供建議,因爲對於不同的場景,最佳設置可能會非常不同。如果執行TableLock並檢查恢復模式並不能完全達到您想要的速度,那麼您可以開始使用批量處理,但它更像是一個灰色區域。

+0

你的答案是非常好too.thanks很多 – Hamid

相關問題