[英]SQL Math update performance optimizing
我正在> 70 Mio运行简单更新。 记录(MS-SQL Server 2008)
UPDATE T1 SET COSTS=AMOUNT*0.003
最多需要8个小时。
是否有一种简单的“便宜”方法来改善此类更新的数学性能?
而且由于没有WHERE子句或不进行比较,所以只需将每条记录与值相乘,创建INDEX将没有效果...或?
非常感谢您抽出宝贵的时间。
写入70 Mio行确实需要时间。 添加索引会使情况更糟,因为必须将索引与表一起更新。
此更新真的必要吗? 您不能使用视图或计算列或其他方法解决任务吗?
我完全同意以上评论。 问题不是匹配计算,而是数据库引擎的I / O。
我只想建议计算列。 您可以在表中添加一个“虚拟”列,该列是根据同一行中的其他值计算得出的。 这意味着您可以完全省去更新。 只需更改表以添加一列:
alter table add costs_new as amount * 0.03.
要保留当前名称,您需要更改旧名称:
exec sp_rename 't1.costs', 'costs_old', 'column';
alter table add costs as amount*0.03;
这可能是您需要的快速而肮脏的方法。
您的问题不是数学(该值的计算),而是sql服务器需要读取每条记录并将其再次写入HDD的事实。 由于计算本身确实很便宜,因此只要有costs
,就可以将costs
作为计算字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.