我正在使用C#,Entity Framework和SQL Server 2008 Express
我通过互联网连接到数据库
加快将数据保存/更新到数据库的最佳方法是什么?
将180条记录保存到数据库需要87秒
将相同数量的记录保存到本地(在同一台机器上)SQL Server只需3.5秒。
对于我保存/更新的每条记录,我检查数据库中是否存在具有此主键的记录,
如果它不存在我只是保存它,
如果它存在,我使用ObjectContext.ApplyCurrentValues(entitySetName,currentEntity)方法更新它。
答案 0 :(得分:6)
不通过互联网使用SQL的几个原因。
如果可能的话,我会在SQL端设置一个WCF服务,并让我的客户端将数据发送到服务,该服务将执行对数据库的查询。与SQL相比,任何WCF协议都不那么繁琐,与你现在看到的相比,你很可能获得速度提升。
当然,在传输数据时对数据进行批处理将有助于减少提交记录所需的流量。由于延迟,您希望尽可能少地通过线路进行呼叫。
答案 1 :(得分:1)
我会考虑发送一个类似于CSV的字符串,并将所有数据发送到存储过程,然后在服务器上,存储过程将使用SQL函数拆分数据并使用它创建临时表,然后存储过程将继续进行检查并在必要时插入。
答案 2 :(得分:0)
除了Mikael Svenson所写的内容之外。
您可以通过“强力”克服延迟并在多个数据库连接上运行。但总的来说,我真的推荐Mikael的建议。