查询:
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)
由于SQL Server管理事务和事务日志的方式,对大量行执行更新/删除总是花费时间,无论多少都有多少。为了加快速度,总是建议
a)将恢复模式从“完整”更改为“批量记录”和
b)批量更新;找到一种方法将批量更新分成〜5.000当时,这将创造奇迹。
啊,并且c)在表运行时禁用表上的所有索引,并在完成后启用它们。
答案 1 :(得分:0)
您的更新语句似乎导致多个页面拆分。要处理此问题,您可以使用填充因子。有关详细信息,请参阅http://technet.microsoft.com/en-us/library/ms177459.aspx。重新建立索引以及设置填充因子可以提高更新的性能。 您可以使用以下方法在现有索引上设置填充因子:
ALTER INDEX <index name> ON <table name>
REBUILD WITH (FILLFACTOR = 80);