0

在對具有相同記錄數(〜5000萬)的這些表執行批量插入操作時,觀察到#temp表與物理(實際)表之間的性能差異。SQL臨時表與物理(實際)表的性能

使用(Insert into ... select)查詢,臨時表需要大約3分鐘,物理表需要大約8分鐘。

這裏,物理表與臨時表完全相同(物理表沒有集羣和非集羣索引)。

爲什麼臨時表預成形比物理表更有效率和更好?有沒有人有一些背景嗎?

+1

也許臨時表空間位於一組更高效的磁盤上。 –

+0

您比較了執行計劃嗎?你的表*真的* 100%相同,直到確切的數據類型和長度(在char/varchar的情況下)? – alroc

+0

檢查爲您的數據庫設置了哪種恢復模式。最有可能的是,它是'充分'的。 Tempdb始終處於「簡單」模式,這意味着批量操作的記錄最少。與「完全」模式相比,這可以降低事務日誌的寫入負載。 –

回答

0

這取決於很多因素:

  • 數據和日誌文件的位置/配置
  • 碎片
  • 自動增長設置
  • IO性能 等

很可能tempdb的是因爲它在服務器重新啓動期間重新創建,或者(如上所述)tempdb是重新創建的在更高效的一組磁盤上

+0

我們可以最小化這種性能差異嗎? – Venus