2014-04-27 94 views
0

查詢:提高Update語句的查詢時間在SQL Server 2008

update Table 
set ColumUpdate = '{"BCstatus":' + CONVERT(varchar(10), Column2) + ',"Saving":"' + 
CONVERT(varchar(200), Column3) + '","Successful":' + 
CONVERT(varchar(10), Column4) + ',"couponCode":"' + Column5 + 
'","description":"' + Column6 + '","domain":"' + Column7 + '.com","url":"' + Column8+'"}' 

我有指標上Column8並與另一列在查詢不存在。

該表格包含大約1600000條記錄,並且花費大量時間來執行相同操作。

+0

如果它是靜態數據,則可以使用計算列。在其他情況下,更新數據需要時間。 –

+0

它是靜態數據 – user2129794

+0

也許單詞'static'不是好的選擇,我的意思是,如果'ColumnUpdate'列依賴於來自其他列的值並表示來自它們的某些格式化值,那麼您可以使用計算列。 –

回答

0

由於SQL Server管理事務和事務日誌的方式,對大量行執行更新/刪除總是需要時間,或多或少地與時間無關。爲了加快東西時,它總是建議

一)從「全」,以更改後的恢復模式「大容量日誌記錄」和

B)做分批更新;找到一種方法,當時分批更新~5000,這將創造奇蹟。

嗯,並c)禁用表中的所有索引,當它正在運行,並在完成時啓用它們。

0

看來您的更新聲明導致多個頁面拆分。要處理這個問題,你可以使用填充因子。有關更多信息,請參閱http://technet.microsoft.com/en-us/library/ms177459.aspx。重新設置索引以及設置填充因子可以提高更新的性能。 您可以使用以下設置現有索引的填充因子:

ALTER INDEX <index name> ON <table name> 
REBUILD WITH (FILLFACTOR = 80);