Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 server 2008 我可以在存储过程中使用并发SQL选择吗?_Sql Server 2008_Stored Procedures_Concurrency - Fatal编程技术网

Sql server 2008 我可以在存储过程中使用并发SQL选择吗?

Sql server 2008 我可以在存储过程中使用并发SQL选择吗?,sql-server-2008,stored-procedures,concurrency,Sql Server 2008,Stored Procedures,Concurrency,在SQLServer2008(并行执行)中,有没有办法在存储过程中同时运行多个SELECT语句 如果是这样的话,必须遵循哪些步骤?不太清楚您的场景,也许您可以在几个选择项上使用“UNION”。或临时表来保存中间结果 如果你是说你能控制它,答案是否定的 但是,如果您有多个选择,而这些选择的结果不会相互影响,那么查询优化程序通常会根据cpu能力的限制进行优化 在查看查询计划时可以看到 但是,您在Sql Express或任何开发人员版本中都不会看到这一点,只有在完整的服务器版本中才能看到。完全同意@

在SQLServer2008(并行执行)中,有没有办法在存储过程中同时运行多个
SELECT
语句


如果是这样的话,必须遵循哪些步骤?

不太清楚您的场景,也许您可以在几个选择项上使用“UNION”。或临时表来保存中间结果

如果你是说你能控制它,答案是否定的

但是,如果您有多个选择,而这些选择的结果不会相互影响,那么查询优化程序通常会根据cpu能力的限制进行优化

在查看查询计划时可以看到


但是,您在Sql Express或任何开发人员版本中都不会看到这一点,只有在完整的服务器版本中才能看到。

完全同意@blowdart的说法-Sql通常会为您优化并行度

您唯一能做的就是使用
MAXDOP
选项(最大并行度)限制该并行度

另见:


您无法采取任何步骤:

  • 一个批处理中的多个DML语句不会同时运行

  • 你不能打开这个

  • 并行性将由优化人员根据查询、索引、成本等进行选择:您不能打开它


如果你有50个选择,我认为你做错了什么。为什么不问问你真正的问题:你可以使用ServiceBroker并行运行,而不是你认为的问题解决方案是…

。我在15个不同的表中更新或插入了许多行。我将update/insert语句设置到ServiceBroker队列中,并让它以10路并行方式运行


队列中有一些开销,但是插入/更新足够大-这可能是有益的。

你是说并行执行-多线程吗?确切地说,是使执行并发的东西。因此,没有什么比创建一个执行
选择
的线程更好的了。。。对吗?对不起,如果我有50个select,我会在每个select上添加此代码,并且根据核心的不同,我会得到更快的执行速度。我需要插入到不同的表中,这就是我有几个select的原因,或者这是在select中添加switch语句的一种方法?
SELECT [Id] FROM [Table] OPTION (MAXDOP 1)