我有一个C#应用程序,允许用户更新数据库中的某些列。我的问题是我在数据库中有300.000条记录,只需更新50.000需要30分钟。我能做些什么来加快速度吗?
我的更新查询如下所示:
UPDATE SET UM = 'UM', Code = 'Code' WHERE Material = 'MaterialCode'.
我唯一的唯一约束是材料。我读取用户选择的文件,并将数据放入数据表,然后逐行,并更新数据库中的相应材料
答案 0 :(得分:1)
限制数据库中索引的数量,特别是如果您的应用程序非常频繁地更新数据。这是因为每个索引占用磁盘空间并减慢行的添加,删除和更新,您应该在分析之后创建新索引数据的使用,执行的查询的类型和频率,以及查询将如何使用新索引。
在许多情况下,创建新索引的速度优势超过了使用额外空间和缓慢行修改的缺点。但是,请避免使用冗余索引,仅在必要时创建它们。对于只读表,可以增加索引数。
答案 1 :(得分:1)
如果频繁更新,请在表格上使用非聚集索引。
如果更新/插入不频繁,请在表上使用聚簇索引。
C#代码可能不是问题,您的更新声明很重要。更新语句的Where子句是需要注意的地方。您需要在where子句中包含一些索引列。
答案 2 :(得分:0)
另一件事,是现场材料,索引?而且,where子句是否需要在具有varchar值的字段上?它不能是整数值字段吗?
如果过滤具有整数而非字符串的字段,性能会更好。不确定这是否可行。