有没有办法在SQL Server 2008 SELECT
中的存储过程中同时运行多个(parallel execution)
语句?
如果是,必须遵循哪些步骤?
答案 0 :(得分:2)
如果你的意思是你可以控制它,答案是否定的。
但是,如果您有多个选项,其中这些选择的结果不会相互影响,那么查询优化器通常会parallelise them for you,并且具有cpu能力的附带条件。
您可以在查看查询计划时看到此内容;
但您不会在Sql Express或任何开发人员版本中看到这一点,仅在完整的服务器版本上。
答案 1 :(得分:1)
您无法采取任何措施:
一个批次中的多个DML语句不会同时运行
您无法在
优化程序将根据查询,索引,成本等选择并行度:您无法将其切换
如果你有50个SELECT,我建议你做错了。你为什么不问你真正的问题:而不是你认为问题的解决方案是......
答案 2 :(得分:0)
你的场景不太清楚,也许你可以在几个SELECT上使用'UNION'。或临时表以保持中间结果。
答案 3 :(得分:0)
完全同意@blowdart - SQL通常会为您优化并行度。
你能做的唯一事情就是限制这种并行度,MAXDOP
选项(最大并行度)。
SELECT [Id] FROM [Table] OPTION (MAXDOP 1)
另见:
http://support.microsoft.com/kb/329204
What is the purpose for using OPTION(MAXDOP 1) in SQL Server?
答案 4 :(得分:0)
您可以使用服务代理并行运行。我这样做了,我必须更新或插入15个不同的表中的许多行。我将update / insert语句设置到服务代理队列上,让它以并行方式运行。
排队有一些开销,但插入/更新足够大 - 这可能是有益的。