Sql-Server

MS SQL Server:批處理中的多個查詢是否曾經並行執行,如果是這樣,當第二個查詢依賴於第一個查詢時會發生什麼?

  • November 3, 2020

如果我有一批兩個不同的SELECT語句,它們是否可以並行執行(如果 SQL 優化器認為它是最有效的執行方法)?

如果第一條SELECT語句選擇到臨時表中,SELECT然後第二條語句插入到同一個臨時表中,這是否會阻止兩條語句並行執行?

(我猜答案是肯定的:)。

批處理語句僅按照它們在批處理中出現的順序連續執行。

現在,如果您有兩個語句通過兩個不同的批次發送到伺服器,它們獨立執行並且基本上同時執行(鎖定和閂鎖除外)。

以下面的程式碼為例:

CREATE TABLE #t
(
   i int
);

INSERT INTO #t (i) VALUES (0);

CREATE TABLE總是在語句之前執行INSERT INTO。考慮一下:

SELECT 1;

SELECT 2;

上面的程式碼總是會按順序執行,即SELECT 1執行,後執行。SELECT 2

有多種方法可以同時執行獨立批處理,包括使用多個活動結果集或 MARS,但是這些都不影響單個批處理中語句的串列處理。

引用自:https://dba.stackexchange.com/questions/215601