回答
可能是作者的印象是DROP TABLE會更快,如果表已經是空的,並且知道TRUNCATE會比DELETE更快。
可能要查看TRUNCATE
命令是否由於存在外鍵而引發異常?
我想這不是出於可能性的境界,但是這個特定的代碼不是在任何類型的錯誤處理塊 – 2010-04-09 15:35:53
我想不出任何其他原因,然後,除了一個錯誤的假設(如答案中提到的CodeByMoonlight) – davek 2010-04-09 15:38:41
可能是一個關節頭。 (並不是我是完美的)。
在非常大的臨時表上,有時候先截斷然後再放下會更快,因爲truncate只是移動一個指針。通常不需要,因爲臨時表會自行刪除。
另一個原因是,DROP TABLE
是完全記錄的操作,所以通過首先截斷(從不記錄),可以降低事務性日誌記錄開銷。
聲音合理 – 2010-04-10 18:17:36
我最近了解到truncate被記錄(但不像刪除是),但我理解你的觀點 – 2010-08-30 21:54:52
喬你把它顛倒了。刪除記錄截斷不是。 +1亞歷克斯,因爲我不知道下降記錄(對我來說它沒有意義)。 – Paparazzi 2011-11-11 03:06:08
另一種可能性是編碼器試圖避免當臨時表大於8MB時發生延遲丟棄。即截斷它然後放下它。我不確定SQL引擎是否會被這個愚弄,但它可能會強制同步清理。我看不出爲什麼你想這樣做,也許爲了避免一些積累延遲滴(溫度表破壞)的問題
- 1. 我們是否需要在刪除之前截斷大表?
- 2. 爲什麼要刪除我的臨時文件?
- 3. C:臨時文件在打開後立即刪除
- 4. mysql截斷表vs刪除
- 5. 臨時表在SSIS中立即丟棄
- 6. 爲什麼DataContractSerializer要截斷StringWriter?
- 7. 爲什麼要截斷BytesIO搞砸了?
- 8. 刪除當前spid的臨時表
- 9. 爲什麼mysql緩存被刪除臨時表的列名?
- 10. 爲什麼MySQL使用臨時表來刪除主鍵?
- 11. Oracle - 截斷全局臨時表
- 12. ORA刪除/截斷
- 13. 什麼是截斷表A和刪除的區別從A
- 14. 爲什麼在迭代列表時爲什麼不能刪除當前元素?
- 15. 複製臨時文件在刪除之前
- 16. Oracle 10g爲什麼要to_char(日期時間)截斷字符串?
- 17. 臨時表刪除行
- 18. 截斷或刪除並創建表
- 19. 爲什麼TinyMCE在正確使用刪除鍵之前需要輸入內容?
- 20. Mvvmcross通用的Windows - 爲什麼我要刪除在LoadState和即時存檔
- 21. 截斷和刪除字符
- 22. this.getHibernateTemplate()。刪除(BP)不會刪除立即
- 23. Python MySQLdb:表不會立即刪除
- 24. 在符號之前截斷php變量
- 25. 刪除臨時表,如果它存在
- 26. 爲什麼z3.check()會在z3.push()前立即放慢?
- 27. 刪除,截斷或刪除清理MySQL中的表格
- 28. 爲什麼要將密碼哈希截斷爲14個字符?
- 29. 刪除表時刪除了臨時表上的索引嗎?
- 30. 爲什麼獨立存儲不能在Windows Phone 7上退出時刪除最後兩個臨時文件?
http://dba.stackexchange.com/questions/4163有一些優秀的分析。 TL; DR:DROP without TRUNCATE更有效。 – Constantin 2011-12-22 11:46:08
很棒的發現。謝謝! – 2011-12-22 15:11:47