我的问题不是“能够”,而是“能够快速”
我有一个静态行数的表,每行需要经常更新多个项目。我是用.Net和SQL Server做的。
对于测试,该表有大约5000行,20列,我每5秒更新3行/列。
我调查了一些解决方案,但无法将更新时间转到我想要的地方(<1秒):
目标是获取内存中的大量数据并将其持久保存到表中,以便其他应用程序或用户可以访问此数据。我认为有这样做的有效手段,我没有偶然发现。
一个限制是我可能无法访问用户SQL Server,所以我想使用UPDATE命令或类似命令在.Net代码中以编程方式执行此操作。
答案 0 :(得分:5)
让您的代码调用System.Data.SqlClient.SqlBulkCopy API批量将更改数据插入到临时表中,然后使用UPDATE命令读取分段数据并使用它更新目标表。
这种方法的原因是上述所有方法都存在相同的基本性能瓶颈:首先将数据导入SQL Server。一旦进入,有很多方法可以将静态数据转换为UPDATE,所有这些都具有非常好的性能。
答案 1 :(得分:2)
如果您的sql server版本是2008+,那么我建议创建存储过程并将所有要更新的数据传递到此SP 表值参数。这将更快地执行