0
在對具有相同記錄數(〜5000萬)的這些表執行批量插入操作時,觀察到#temp表與物理(實際)表之間的性能差異。SQL臨時表與物理(實際)表的性能
使用(Insert into ... select)查詢,臨時表需要大約3分鐘,物理表需要大約8分鐘。
這裏,物理表與臨時表完全相同(物理表沒有集羣和非集羣索引)。
爲什麼臨時表預成形比物理表更有效率和更好?有沒有人有一些背景嗎?
在對具有相同記錄數(〜5000萬)的這些表執行批量插入操作時,觀察到#temp表與物理(實際)表之間的性能差異。SQL臨時表與物理(實際)表的性能
使用(Insert into ... select)查詢,臨時表需要大約3分鐘,物理表需要大約8分鐘。
這裏,物理表與臨時表完全相同(物理表沒有集羣和非集羣索引)。
爲什麼臨時表預成形比物理表更有效率和更好?有沒有人有一些背景嗎?
這取決於很多因素:
很可能tempdb的是因爲它在服務器重新啓動期間重新創建,或者(如上所述)tempdb是重新創建的在更高效的一組磁盤上
我們可以最小化這種性能差異嗎? – Venus
也許臨時表空間位於一組更高效的磁盤上。 –
您比較了執行計劃嗎?你的表*真的* 100%相同,直到確切的數據類型和長度(在char/varchar的情況下)? – alroc
檢查爲您的數據庫設置了哪種恢復模式。最有可能的是,它是'充分'的。 Tempdb始終處於「簡單」模式,這意味着批量操作的記錄最少。與「完全」模式相比,這可以降低事務日誌的寫入負載。 –