使用 ADO.NET 更新当前读取的行
Updating currently-read row using ADO.NET
我需要更新大型 table(超过 3000 万行)中没有主键的列。 table 行有一个唯一的电子邮件地址列。更新涉及生成一个必须在 C# 中出现的值并将其附加到列值。所以必须读取行,更新列值,然后写回。
我希望 ADO.NET 中有游标的概念,但我没有看到。我可以足够快地读取行,但是使用电子邮件地址的 WHERE 子句的更新调用需要很长时间。在研究了这个之后,大多数答案似乎是 "put in a primary key!" 但这不是一个选项。有什么想法吗?
对于 3000 万行 heap,没有太多选择。没有任何索引,您基本上无法加快速度。
唯一的解决办法是check a fragmentation一个堆。您应该添加一个聚簇索引以缓解 table 碎片,然后立即将其删除。但是,如果您不能以任何方式影响 table,则将所有数据移动到新的 table 中可能会更快 :-)
我需要更新大型 table(超过 3000 万行)中没有主键的列。 table 行有一个唯一的电子邮件地址列。更新涉及生成一个必须在 C# 中出现的值并将其附加到列值。所以必须读取行,更新列值,然后写回。
我希望 ADO.NET 中有游标的概念,但我没有看到。我可以足够快地读取行,但是使用电子邮件地址的 WHERE 子句的更新调用需要很长时间。在研究了这个之后,大多数答案似乎是 "put in a primary key!" 但这不是一个选项。有什么想法吗?
对于 3000 万行 heap,没有太多选择。没有任何索引,您基本上无法加快速度。
唯一的解决办法是check a fragmentation一个堆。您应该添加一个聚簇索引以缓解 table 碎片,然后立即将其删除。但是,如果您不能以任何方式影响 table,则将所有数据移动到新的 table 中可能会更快 :-)