我想從一百萬+排表中刪除行的約90%。我能做些什麼來使這個更快?例如如果我打開簡單恢復模式會有幫助嗎?如何做一個快速刪除大量的數據從一個大表(SQL Server)的
5
A
回答
8
使用select into將您不想刪除的行復制到臨時表中,然後使用truncate表而不是刪除。將行復制回舊錶中。首先記住drop contraints。
如果您有標識列,承租人數據後,使用類似這樣補種表。
declare @seed int
select @seed = max(identity_col)+1 from tableName
DBCC CHECKIDENT (orders, table_name, @seed)
2
鑑於您希望刪除90%的行,對於希望保留到新表中的10%行,SELECT INTO可能是最快的。
1
如果你不能休息複製到另一張表,然後再截斷和複製回來...
...下探指數大約是你可以做編程聰明的嘛。在這種情況下,刪除索引並重新創建索引可能會有幫助
...或獲得更快的磁盤子系統,主要用於數據。
恢復模式不會幫助 - 恢復模式表示日誌是可刪除後立即(可BBE隱含的)承諾,但什麼也沒有避免被軟件寫的日誌條目。
1
添加一個IsDeleted (BIT)
標誌,將其設置爲1表示這些90%,並在您的表上創建一個視圖,其中只顯示IsDeleted=0
的行。
刪除始終是)一個資源密集型操作,和b)破壞問責的任何可能性 - 我會嘗試,如果以往任何時候都可能避免它,因爲這兩個原因(性能和數據破壞)。改用「軟刪除」方法。
相關問題
- 1. 如何更快速地刪除大型SQL Server中的數據?
- 2. 做大量從SQL Server刪除
- 3. 在sql server中刪除大量數據
- 4. SQL Server大量數據在一個或多個表中
- 5. 從SQL Server數據庫刪除大量數據
- 6. SQL刪除大量數據
- 7. 如何快速導入mysql的一個巨大的sql腳本?
- 8. 如何快速顯示大量數據
- 9. 如何從一個SQL Server數據庫表中刪除重複的行?
- 10. 如何使數據從一個表中有大量數據以百萬計到另一個表中sql
- 11. 刪除大量的行很慢 - SQL Server
- 12. 從SQL Server 2008中刪除大量數據
- 13. 如何快速從大型數組中刪除少於兩個字符的值?
- 14. 刪除大量的行從一個非常大的卡桑德拉表
- 15. 如何從一個UITableView中刪除一個UITableView的多節快速
- 16. 刪除大量的數據
- 17. 大量的數據刪除
- 18. 提高刪除查詢的速度,刪除大量數據?
- 19. 如何從SQL Server緩存一個大表
- 20. 在SQL Server中將龐大的表數據從一個數據庫複製到另一個數據庫
- 21. 如何將大量的數據從一個表複製到SQL Server中的其他表
- 22. 快速刪除只有一個不同值的數據幀列
- 23. Sql Server - 如何計算數據庫中每個表的一些行的大小?
- 24. 使用SQL Server中的多個表刪除一個表中的數據
- 25. 如何從巨大的.mat文件中快速加載一個小變量?
- 26. 如何將一個大整數除以另一個大整數?
- 27. SQL Server:基於另一個表的值從表中刪除
- 28. 將一個大型(30,000行)表從一個數據庫複製到另一個數據庫的最快方法?
- 29. 從SQL Server數據庫中的所有表數據刪除,除了一些表
- 30. 如何在同一個數據庫中將大量數據從一個表複製到另一個表中?
不錯!我有身份專欄,所以將不得不處理,但沒關係。 – Rory 2010-10-21 11:28:52
+1 - 這至少在2005+以上(至少不知道以前的版本)是最低限度登錄的,所以它應該超級快。請記住重建索引所需的時間。 – JNK 2010-10-21 12:29:48