繁体   English   中英

SQL Math更新性能优化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM