將大量數據插入表的方式更有效和/或被認爲是最佳實踐 - 在存儲過程中使用INSERT INTO語句或使用DTS/SSIS數據轉換獲取?源數據與目標表位於同一個SQL服務器上。對於SQL Server中的數據插入,存儲過程與DTS/SSIS的對比
1
A
回答
1
我會建議,如果你的轉換是直截了當的;即,如果它們可以在幾個SELECT語句中輕鬆編碼,那麼帶有一些SELECT INTO語句的簡單存儲過程是最佳選擇。非常高效,而且更少的運動部件需要維護。另一方面,如果您的轉換邏輯非常複雜和/或可更改,請考慮SSIS。它的存在允許您建模和維護複雜的多步轉換。
祝你好運!
1
我想你應該問自己一堆問題,然後才能回答這個問題。這是我經歷的...
- 有一次或重複? 這主要是爲了確定我是否需要回答支持和性能問題。如果是一次性傳輸,只要你覺得最舒適就做到這一點,然後將源代碼存檔,以備再次使用。
- 我店裏的其他開發者使用/最舒服的是什麼? 在這裏,我做了很多SSIS的東西,他們主要只是SQL(和VB)。既然我希望他們在我離開時支持它,如果任務不是太複雜,我可能會將它構建到SP中。
- 當服務器負載較低或性能調整問題時,這會在夜間運行嗎? 對於白天的東西,我幾乎總是會構建存儲過程,因爲對於我或其他人來說,更容易挖掘並調整性能問題。如果性能不是問題,我更可能使用SSIS。這不是因爲我認爲INSERT速度更快,而是事後調整更容易。
0
我總是使用批量插入。您將需要刪除索引,並在最後重建它們。
http://msdn.microsoft.com/en-us/library/ms188365.aspx
ALTER INDEX [INDEXNAME]表DISABLE
容量插入
ALTER INDEX [INDEXNAME]表REBUILD
相關問題
- 1. SQL Server存儲過程。插入表
- 2. 用於插入的SQL Server單存儲過程
- 3. 從存儲過程插入數據到SQL Server
- 4. 與SQL Server存儲過程
- 5. SQL Server中的存儲過程中的許多插入
- 6. 比較跨多個數據庫的存儲過程(SQL Server)
- 7. 從SQL Server存儲過程中存儲有用的數據
- 8. 如果滿足SQL Server存儲過程的條件,將數據插入表中
- 9. 插入和更新SQL Server中的存儲過程
- 10. 在SQL Server存儲過程中選擇插入的行
- 11. 插入西里爾字符串與存儲過程的參數的SQL Server
- 12. 存儲過程基於SQL Server中
- 13. 基於輸入參數值的SQL Server存儲過程
- 14. 用於在兩個表中插入數據的存儲過程
- 15. 在db2存儲過程中插入JSON對象的數組
- 16. 存儲過程中的SQL Server浮點數比較
- 17. SQL Server的存儲過程
- 18. 在PowerShell中調用存儲過程以插入到SQL Server數據庫中
- 19. 測試對於只擁有使用SQL Server存儲過程
- 20. 存儲過程中的SQL Server列存儲索引更新/插入
- 21. 存儲過程不會插入數據
- 22. 在存儲過程中將變量插入到SQL Server表中
- 23. 通過存儲過程將數據從Excel導入到SQL Server
- 24. SQL Server存儲過程 - 新插入的數據不會馬上顯示出來
- 25. 如何控制對SQL Server中存儲過程的訪問?
- 26. 在SQL Server 2000中授予對存儲過程的選擇權
- 27. 如何使用存儲過程將datetime插入到SQL Server數據庫表中?
- 28. 表中的數據作爲sql server中存儲過程的輸入參數集
- 29. SQL Server存儲過程從剛剛插入的行獲取值
- 30. 帶有多個表插入的SQL Server存儲過程
比爾,謝謝期待你的答覆! – Tamila
所有這些任務都是每天或每月運行的重複/計劃任務。其中一些在生產時間運行,另一些則在下班時間運行。我不是很關心其他開發者,因爲我是唯一一個處理這個問題的人,而且我對這兩種解決方案都很滿意。由於數據量並不大,因此性能通常不是一個大問題。現在我在我的數據庫中有兩種解決方案的混合體,我希望在那裏有一些一致性,所以我正在尋找最佳實踐。 – Tamila
我想說最好的做法是選擇一個並堅持下去,所以下一個人可以找到所有的作品。永遠記住,下一個開發人員,對於如何完成任務一無所知,明年可能會是你。 – Bill