J.D*_*.D. 7 sql-server parallelism sql-server-2008-r2 temporary-tables sql-server-2017
如果我有一批两个不同的SELECT
语句,是否可以并行执行它们(如果 SQL 优化器认为它是最有效的执行方法)?
如果第一个SELECT
语句选择到临时表中,SELECT
然后第二个语句插入到同一个临时表中,这是否会阻止两个语句并行运行?
(我猜答案是肯定的,是的 :)。
Han*_*non 10
批处理语句只能按照它们在批处理中出现的顺序连续执行。
现在,如果您有两个语句由两个不同的批次发送到服务器,它们将独立运行,并且基本上同时运行(锁定和锁定放在一边)。
以下面的代码为例:
CREATE TABLE #t
(
i int
);
INSERT INTO #t (i) VALUES (0);
Run Code Online (Sandbox Code Playgroud)
在CREATE TABLE
之前始终运行INSERT INTO
的语句。考虑一下:
SELECT 1;
SELECT 2;
Run Code Online (Sandbox Code Playgroud)
上面的代码总是会按顺序SELECT 1
运行,即先运行,然后完成后SELECT 2
运行。
有多种方法可以同时运行独立的批处理,包括使用多个活动结果集或 MARS,但是这些方法都不会影响单个批处理中语句的串行处理。