使用ADO.NET更新当前读取的行

本文关键字:读取 ADO NET 更新 使用 | 更新日期: 2023-09-27 18:20:48

我需要更新一个没有主键的大表(超过3000万行)中的列。表行具有唯一的电子邮件地址列。更新包括生成一个必须出现在C#中的值,并将其附加到列值。因此,必须读取行,更新列值,并将其写回。

我希望在ADO.NET中有一个游标的概念,但我没有看到。我可以很快地读取行,但使用WHERE子句作为电子邮件地址的更新调用需要很长时间。经过研究,大多数答案似乎都是"放在主键里!"但这不是一个选项。有什么想法吗?

使用ADO.NET更新当前读取的行

对于30mil行的堆,没有太多选项。如果没有任何索引,你基本上什么都做不了。

唯一的解决方案是检查堆的碎片。您应该添加一个聚集索引以减轻表碎片,然后立即将其删除。但是,如果您不能以任何方式影响该表,那么将所有数据移动到新表中可能会更快:-)