Sql-Server
MS SQL Server:批處理中的多個查詢是否曾經並行執行,如果是這樣,當第二個查詢依賴於第一個查詢時會發生什麼?
如果我有一批兩個不同的
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,但是這些都不影響單個批處理中語句的串列處理。