我有一个拥有9亿条记录的数据库表。我处于需要更新该表中4个不同键的情况,方法是将它们连接到一个维并将事实表的键设置为该维的键。我已经编写了4个不同的SQL脚本(请参阅下面的示例)来执行更新,但问题是执行时间太长。该查询已运行超过20个小时,我甚至不知道它走多远,这需要多长时间。我有什么办法可以改善这一点,所以只需要几个小时就可以完成。添加索引会改善吗?SQL - 更新大表(900万条记录)的查询性能
UPDATE f
SET f.ClientKey = c.ClientKey
FROM dbo.FactSales f
JOIN dbo.DimClient c
ON f.ClientId = c.ClientId
在针对900,000,000行表执行此操作之前,您没有对较小的子集进行测试吗?哎哟。最坏的情况是更新列上的索引。我宁愿创建一个新表,编写一个包含所有4个连接的Select,插入/选择,删除和重命名。 – dnoeth
如果(或更可能'何时')这是要回滚... ouch ... –