更新表需要很长时间

rre*_*ejc 5 sql sql-server-2008

我在SQL Server 2008(SP2)中有一个表,包含3000万行,表大小为150GB,有几个int列和两个nvarchar(max)列:一列包含文本(1-30000个字符),另一个包含xml(最多100000个字符).

表没有任何主键或索引(它是临时表).所以我正在运行一个查询:

UPDATE [dbo].[stage_table] 
SET [column2] = SUBSTRING([column1], 1, CHARINDEX('.', [column1])-1);
Run Code Online (Sandbox Code Playgroud)

查询运行了3个小时(并且仍未完成),我认为这个时间太长了.是吗?我可以看到.mdf文件的读取速率为5MB/s,写入速率为10MB/s.

如何找出查询运行这么久的原因?"服务器"是RAID 10上的i7,24GB RAM,SATA磁盘.

更新:

table包含一个int列,两个nvarchar(20)列和两个nvarchar(max)列.上面的update子句中的Column1和Columns2是nvarchar(20)列."大"列未更新.

非常感谢!

Lar*_*tig 3

老实说,您正在做的工作量很大(文本搜索和替换 150 GB)。如果暂存数据源自数据库外部,您可能会考虑在那里执行文本操作,而不需要任何数据库开销。