手柄记录

问题描述:

有人问我跑DB转换后沉重的更新,对于订单ID的一个给定的名单,手柄记录

我需要打开名册和处理每个ID。

例如:

- 客户表:

创建表CustOrders (ID INT, CustFName VARCHAR(10), CustLname VARCHAR(10), 主键(ID) )

对于列表中的每个id,存储过程将更新该记录。

我的第一个念头是:

  1. 创建它接受的ID(用表值参数)的列表存储过程。

  2. 每个ID,做我的东西

但后来我意识到这将需要为我想出了一个主意

太多的时间和有和尝试,并在运行并行模式,例如:

尝试运行几个存储的过程,其中每个存储的过程处理不同批量的ID的,

通过Mod运算符分例如 。

这就是我决定发布这个问题的原因,也许你有一个更好的想法,如何编写可以并行模式运行的程序。

+0

更新它如何?如果您提供更多详细信息,则可能会向您展示如何在不逐一进行的情况下执行此操作(这肯定会比一次更新所有代价更高,SQL Server非常擅长,或者至少分批例如,一次10000行)。无论何时您在SQL Server中工作,并且认为“我需要一次执行x行”,并再次思考,因为在大多数情况下,这是错误的方式。 – 2013-04-07 19:21:31

+0

还有谁的要求是这些更新并行运行?有人认为可以同时对同一页面进行两次更新吗?尽管可以根据聚集索引将更新分成不同的批次,但这只有在表上没有聚集索引时才有所帮助,并且在协调时仍然很痛苦。为什么不告诉我们你是如何更新的,获取最有效方法的建议,然后*看看是否存在性能问题。与其告诉我们您需要通过并行化来解决性能问题。 – 2013-04-07 19:23:06

这是一个分区表吗?如果不运行并行更新可能不会有帮助。它在另一端仍然是一组写头。

+0

Thx为您的意见。 – TheRunningDBA 2013-04-07 19:41:45