是否可以在同一存储过程中并行处理for循环?

问题描述 投票:1回答:1

有一个SQL Server存储过程,我想循环遍历从表中读取的一组选项。所以说一张桌子有100个选项。我的存储过程将循环遍历这些选项,对于每个选项,我需要进行一些检查 - 通过查询基于选项的几个特定表并标记与其相关的状态。

我是否可以拆分for循环,以便在一个循环中处理第1行-50,在另一个循环中处理第51-100行,并且我能够并行运行这两个?我看到了一种方法,您可以通过SQL作业或其他方式并行运行多个存储过程,但无法通过拆分来查看是否可以通过并行执行for循环。

sql-server loops stored-procedures foreach parallel-processing
1个回答
0
投票

将您的问题视为学术问题,而不是考虑是否存在基于集合的解决方案,因为没有足够的信息可以做到这一点。

不能使用标准TSQL在单个循环中(或在两个单独的循环中)执行此操作,因为TSQL是同步的。即使您“拆分”循环,第二个过程调用也无法启动,直到第一个调用完成。它们不会并行运行。

要并行运行两个循环,您必须引入一些其他语言。 this search的结果出现了不少想法,但我看到的前几个有很多关于陷阱和意外结果的警告。如果您想尝试其中任何一个,由您决定。

© www.soinside.com 2019 - 2024. All rights reserved.