我有一個擁有9億條記錄的數據庫表。我處於需要更新該表中4個不同鍵的情況,方法是將它們連接到一個維並將事實表的鍵設置爲該維的鍵。我已經編寫了4個不同的SQL腳本(請參閱下面的示例)來執行更新,但問題是執行時間太長。該查詢已運行超過20個小時,我甚至不知道它走多遠,這需要多長時間。我有什麼辦法可以改善這一點,所以只需要幾個小時就可以完成。添加索引會改善嗎?SQL - 更新大表(900萬條記錄)的查詢性能
UPDATE f
SET f.ClientKey = c.ClientKey
FROM dbo.FactSales f
JOIN dbo.DimClient c
ON f.ClientId = c.ClientId
在針對900,000,000行表執行此操作之前,您沒有對較小的子集進行測試嗎?哎喲。最壞的情況是更新列上的索引。我寧願創建一個新表,編寫一個包含所有4個連接的Select,插入/選擇,刪除和重命名。 – dnoeth
如果(或更可能'何時')這是要回滾... ouch ... –