更新列很慢

时间:2012-07-25 15:53:45

标签: sql-server sql-server-2008

有人可以向我解释为什么更新表列只使用八个可能的处理器之一?我认为这样的过程可以很容易地细分为所有可用的处理器吗?

查询就像这样:

update
    My_Table
set
    column2 = 'Atlantic'
from
    My_Table
where
    column2 != 'Ocean'

有问题的表约为6GB。查询期间的IO Deltas大约是7MB / s,这是非常低的。

服务器是远程计算机,我是唯一的用户。并行已启用。

我没有使用我可能应该使用的索引。

更新

解决方案可能是不更新并选择带有case语句的表副本。复制完成后,可以删除旧表。当然,这只有在有足够的磁盘空间时才可行。

1 个答案:

答案 0 :(得分:0)

我的第一个问题是你有TRIGGER,因为这通常是最小的原因。 你有如此大量的数据,所以可以查看以下几点:

索引更新
外键查找
外键级联
索引视图
计算列
检查约束

快照隔离
文件增长