0
我昨天執行的更新語句大致如下:在已有聚簇索引的字段上放置非聚簇索引時,性能是否會提高?
UPDATE MainTable
Set SomeField = SubsetTable.SomeField
where MainTable.MainTableKey = SubsetTable.MainTableKey
其中SubsetTable
是MainTable
一個子集,並且具有相同的主鍵字段。 MainTable
大約有200m記錄,SubsetTable
有5m記錄。 MainTableKey
是一個GUID。
這兩個表在MainTableKey
上都有一個聚集索引。
當我第一次執行這個查詢花了14個小時。
然後我在這兩個表上添加了一個非聚集索引MainTableKey
。現在需要30分鐘。
有沒有人有任何想法,爲什麼性能增益會如此戲劇性?
第一個查詢合併聯接其中涉及完全讀兩個表:
比較執行計劃! –
你使用了哪個數據庫?有關性能的問題與數據庫高度相關。 –
SQL Server 2008 R2。對不起,只是更新了標籤 – Karl