Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用多条记录更新数据库_Sql_Sql Server_Database_Performance_Records - Fatal编程技术网

Sql 使用多条记录更新数据库

Sql 使用多条记录更新数据库,sql,sql-server,database,performance,records,Sql,Sql Server,Database,Performance,Records,我们使用sqlserver并拥有Winforms应用程序。在我们的产品中,有时单笔交易的记录超过50000条,我们面临性能问题 当我们有大量的数据时,我们通常会在多个数据库调用中这样做。因此,在我们的一个导入功能中,我们更新了1000行的服务器。因此,如果我们有5000条记录,那么在处理它们时(在for循环中),我们更新前1000行,然后继续处理,直到我们得到新的1000行进行更新。这表现更好,但老实说,这不是我感觉最好的表现 但我们在其他导入/导出功能中看到,与1000行相比,每5000行更新

我们使用
sqlserver
并拥有
Winforms
应用程序。在我们的产品中,有时单笔交易的记录超过50000条,我们面临性能问题

当我们有大量的数据时,我们通常会在多个数据库调用中这样做。因此,在我们的一个导入功能中,我们更新了1000行的服务器。因此,如果我们有5000条记录,那么在处理它们时(在for循环中),我们更新前1000行,然后继续处理,直到我们得到新的1000行进行更新。这表现更好,但老实说,这不是我感觉最好的表现

但我们在其他导入/导出功能中看到,与1000行相比,每5000行更新一次数据库可以获得很好的效果。因此,我们面临着很多困惑,而且我们的应用程序中的代码看起来也不尽相同

谁能告诉我是什么让这一切发生的。你没有样本数据,数据库模式等,是的,我同意。但是,在使用数据库时,是否有任何场景需要注意/考虑?为什么不同数量的记录给了我们好的结果,有什么我们忽略的吗?我不是数据库的冠军,更像是.Net的编程高手。我很高兴听到你的建议


不确定这是否有用,我们的数据通常包含员工详细信息,如工资单信息、个人详细信息、应计福利、薪酬等。数据来自excel,并且我们在内部流程中生成大量数据。如果你需要更多信息,请告诉我。谢谢

数据库调用越多,需要的连接管理就越多(打开连接、使用连接、清理和关闭、是否使用连接池等)。通过导线发送的数据量相同,但打开和关闭抽头的频率更高,这会带来开销

这样做的缺点是事务中保存的数据量更大

然而,如果我可以提出一个建议,您可能会想以不同的方式来实现这一点,即尽可能快地将所有数据加载到数据库中(如果可能的话,将“强< >约束< <强> >和事务管理关闭的中间表中”)然后允许数据库执行检查和验证数据的任务


由于您使用的是SQL Server,您只需打开SQL Profiler,定义适当的事件筛选器,并观察在不同负载下发生的情况。

您必须添加更多信息。您是执行1000次单次更新,还是用一条语句更新1000行?或者在临时表中插入1000行,然后更新另一个表?要提高总体性能,请避免查询中的子选择和多个or,改进键和索引,禁用触发器,或者尽可能进行批量插入