大家好我有一个有趣的任务来更新一个大约有200万行的表中的单个列。我尝试过使用MVC实体框架,但是我遇到了“内存不足异常”,我只是想知道是否还有其他方法。
有趣的是,它不仅仅是一个简单的更新。该过程需要阅读表中已有的TelephoneNumber
列,例如,这可能是014812001
。然后它需要根据大于1的出现次数计算这个数字的得分。因此,例如使用上面的数字,这将得到6,因为我们有3 x 1和3 x 0得到总数为6。 p>
计算完这个分数后,需要将此数字插入到当前行的a列中进行处理,因此在我们的例子中,该行包含TelephoneNumber = 014812001
。
这可能是使用TSQL还是继续我的实体框架方法更好?
答案 0 :(得分:2)
对于这样的批量更新,我会总是建议在服务器上执行此操作 - 拖下200万行,更新单个列,然后将其推回到服务器再次.....
我认为根据您的描述,创建一个可以计算此分数的小T-SQL用户定义函数应该相当简单。完成后,您可以发出一个T-SQL语句:
UPDATE dbo.YourTable
SET Score = dbo.fnCalculateScore(TelephoneNumber)
WHERE .... (whatever condition you might have) .....
这应该比你的实体框架方法快几个数量级......