SQL 資料庫中的智慧查詢處理

適用於:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

智慧查詢處理 (IQP) 功能系列包含具有廣泛影響的功能,能夠以最少的實作投入量來採用,以改善現有工作負載的效能。 以下圖表詳述 IQP 功能家族及其首次於 SQL Server 上推出的時間。 所有 IQP 功能皆可在 Azure SQL Managed Instance 與 Azure SQL Database 中使用。 某些功能的實際提供情況,依資料庫的相容性層級而定。

圖表展示智慧查詢處理家族的特性及其在 SQL Server 中引入的時間。

觀看這段影片,以取得智慧型查詢處理的概觀:

 

有關智慧查詢處理(IQP)功能的示範與範例程式碼,請參閱 GitHub 範例庫

您可以為資料庫啟用適用的資料庫相容性層級,讓工作負載能自動滿足智慧查詢處理的資格。 你可以用 Transact-SQL 設定。 例如:

ALTER DATABASE [WideWorldImportersDW]
    SET COMPATIBILITY_LEVEL = 170;

下表詳述了所有智慧查詢處理功能,以及這些功能對於資料庫相容性層級的任何要求。 如需所有 IQP 功能的完整詳細資訊,包括版本發行說明及更深入的描述,請參閱 智慧型查詢處理功能詳細

Azure SQL Database and SQL Server 2025 的 IQP 功能

IQP 功能 在 Azure SQL Database 中受到支援 支援於 SQL Server 2025 (17.x) Description
選擇性參數計劃優化 (OPPO) 是的,從資料庫相容性等級 170 開始 是的,從 SQL Server 2025(17.x)開始,資料庫相容性等級為 170 利用參數敏感計劃優化(PSPO)所帶來的調適型計劃優化(Multiplan)基礎架構,從單一句子產生多個計劃。 此功能可以在執行階段根據參數是否為 NULL OR NOT NULL 選擇最佳的計劃,這可改善查詢的效能,避免在此類查詢模式中預設為不佳的效能。
表達式的基數估計(CE)反饋 是的,從資料庫相容性等級 170 開始 是的,從 SQL Server 2025(17.x)開始,資料庫相容性等級為 160 擴展 CE 回饋,透過學習先前執行並自動將適當的 CE 模型選擇應用於未來執行,以提升跨查詢重複表達式的基數估計值。
OPTIMIZED_SP_EXECUTESQL Yes 是的,從 SQL Server 2025(17.x)開始 有效地減少編譯風暴所造成的影響。 編譯風暴是指同時編譯大量查詢,導致效能問題和資源爭用的情況。 啟用此功能,以允許 sp_executesql 從編譯的角度像預存程序和觸發器等物件那樣運行。

Azure SQL Database 與 SQL Server 2022 的 IQP 功能

IQP 功能 在 Azure SQL Database 中受到支援 支援於 SQL Server 2022(16.x)及更新版本 Description
調適性聯結 (批次模式) 是,從資料庫相容性層級 140 開始 是的,從 SQL Server 2017(14.x)開始,資料庫相容性等級為 140 自適性聯結會在執行階段,依據實際輸入列而機動選取聯結類型。
近似相異值計數 Yes 是的,從 SQL Server 2019(15.x)開始 提供對巨量數據案例的近似 COUNT DISTINCT 值,並具有高效能和低記憶體使用量的優勢。
近似百分位數 是,從資料庫相容性層級 110 開始 是的,從 SQL Server 2022(16.x)開始,相容性等級為 110 快速計算具有可接受排名型錯誤界限的大型資料集百分位數,以協助使用近似百分位數彙總函式,來做出快速決策。
資料列存放區上的批次模式 是,從資料庫相容性層級 150 開始 是的,從 SQL Server 2019(15.x)開始,相容性等級為 150 為耗用大量 CPU 的關聯式 DW 工作負載提供批次模式,而且不需要資料行存放區索引。
基數估計 (CE)回饋 是,從資料庫相容性層級 160 開始 是的,從 SQL Server 2022(16.x)開始,相容性等級為 160 自動調整重複查詢的基數估計值,以將無效率 CE 假設造成查詢效能不佳的工作負載最佳化。 CE 意見反應會識別並使用更符合指定查詢和資料分散的模型假設,以改善查詢執行計畫品質。
平行處理度 (DOP) 反饋 是,從資料庫相容性層級 160 開始 是,從資料庫相容性層級 160 開始 會自動調整重複查詢的平行處理原則程度,將平行處理原則效率不佳而可能導致效能問題的工作負載最佳化。 需要啟用 Query Store。
交錯執行 是,從資料庫相容性層級 140 開始 是的,從 SQL Server 2017(14.x)開始,資料庫相容性等級為 140 使用在第一次編譯時,所遇到的多重陳述式資料表值函式實際基數,而不是定點猜測。
記憶體授權反饋 (批次模式) 是,從資料庫相容性層級 140 開始 是的,從 SQL Server 2017(14.x)開始,資料庫相容性等級為 140 若批次模式查詢的作業會寫入磁碟,請為後續執行新增記憶體。 若查詢浪費了 > 50% 配置給它的記憶體,請縮減記憶體授與大小以便後續執行。
記憶體配額反饋 (資料列模式) 是,從資料庫相容性層級 150 開始 是的,從 SQL Server 2019(15.x)開始,資料庫相容性等級為 150 若資料列模式查詢中的作業存取磁碟,請新增記憶體以提升後續執行效能。 若查詢浪費了 > 50% 配置給它的記憶體,請縮減記憶體授與大小以便後續執行。
內存分配反饋 (百分位數) 是,所有資料庫均已啟用 是的,從 SQL Server 2022(16.x)開始,資料庫相容等級為 140 藉由不具侵入性的方式結合過去查詢執行,改進記憶體授與意見反饋,解決現有的限制。
記憶體分配意見回饋的持續性 是,所有資料庫均已啟用 是的,從 SQL Server 2022(16.x)開始,資料庫相容等級為 140 可提供新功能來保留記憶體授與回饋。 需要啟用資料庫的 Query Store 並設置為 READ_WRITE 模式。
CE 反饋持續性 是,從資料庫相容性層級 160 開始 是的,從 SQL Server 2022(16.x)開始),資料庫相容性等級為 160 需要啟用資料庫的 Query Store 並設置為 READ_WRITE 模式。
使用查詢存放區的優化計劃強制執行 Yes 是的,從 SQL Server 2022(16.x)開始)。 減少重複強制查詢的編譯額外負荷。 更多資訊請參見使用查詢存放區的最佳化計劃強制執行
純量 UDF 內嵌 是,從資料庫相容性層級 150 開始 是的,從 SQL Server 2019(15.x)開始,資料庫相容性等級為 150 純量 UDF 會被轉換成「內嵌」在呼叫查詢中的對等關聯運算式,而這通常可讓效能大幅提升。
參數敏感計畫最佳化 是,從資料庫相容性層級 160 開始 是的,從 SQL Server 2022(16.x)開始,資料庫相容性等級為 160 參數敏感計劃優化針對這種情況進行處理:對於參數化查詢,單一快取計劃無法對所有可能的傳入參數值都達到最佳效果,例如面對不均勻的數據分佈。
資料表變數延後編譯 是,從資料庫相容性層級 150 開始 是的,從 SQL Server 2019(15.x)開始,資料庫相容性等級為 150 使用在第一次編譯時遇到的資料表變數的實際基數,而非固定的預測值。

Azure SQL Managed Instance 的 IQP 功能

IQP 功能 受支援於 Azure SQL 托管執行個體 Description
調適性聯結 (批次模式) 是,從資料庫相容性層級 140 開始 自適性聯結會在執行階段,依據實際輸入列而機動選取聯結類型。
近似相異值計數 Yes 提供對巨量數據案例的近似 COUNT DISTINCT 值,並具有高效能和低記憶體使用量的優勢。
近似百分位數 是,從資料庫相容性層級 110 開始 快速計算具有可接受排名型錯誤界限的大型資料集百分位數,以協助使用近似百分位數彙總函式,來做出快速決策。
資料列存放區上的批次模式 是,從資料庫相容性層級 150 開始 為耗用大量 CPU 的關聯式 DW 工作負載提供批次模式,而且不需要資料行存放區索引。
基數估計 (CE)回饋 是,從資料庫相容性層級 160 開始 自動調整重複查詢的基數估計值,以將無效率 CE 假設造成查詢效能不佳的工作負載最佳化。 CE 意見反應會識別並使用更符合指定查詢和資料分散的模型假設,以改善查詢執行計畫品質。
表達式的基數估計(CE)反饋 是的,從 Azure SQL Managed Instance 的資料庫相容性等級 160 開始,使用 SQL Server 2025Always-up-to-dateupdate policy。 不,這是針對 SQL Server 2022 更新政策 擴展 CE 回饋,透過學習先前執行並自動將適當的 CE 模型選擇應用於未來執行,以提升跨查詢重複表達式的基數估計值。
平行處理度 (DOP) 反饋 從資料庫相容性等級 160 開始,Azure SQL 托管執行個體在 SQL Server 2025永遠保持最新更新政策下。 不,這是針對 SQL Server 2022 更新政策 會自動調整重複查詢的平行處理原則程度,將平行處理原則效率不佳而可能導致效能問題的工作負載最佳化。 需要啟用 Query Store。
交錯執行 是,從資料庫相容性層級 140 開始 使用在第一次編譯時,所遇到的多重陳述式資料表值函式實際基數,而不是定點猜測。
記憶體授權反饋 (批次模式) 是,從資料庫相容性層級 140 開始 若批次模式查詢的作業會寫入磁碟,請為後續執行新增記憶體。 若查詢浪費了 > 50% 配置給它的記憶體,請縮減記憶體授與大小以便後續執行。
記憶體配額反饋 (資料列模式) 是,從資料庫相容性層級 150 開始 若資料列模式查詢中的作業存取磁碟,請新增記憶體以提升後續執行效能。 若查詢浪費了 > 50% 配置給它的記憶體,請縮減記憶體授與大小以便後續執行。
內存分配反饋 (百分位數) 是,從資料庫相容性層級 160 開始 藉由不具侵入性的方式結合過去查詢執行,改進記憶體授與意見反饋,解決現有的限制。
記憶體配置、CE 和 DOP 反饋持續性 是,從資料庫相容性層級 160 開始 可提供新功能來保留記憶體授與回饋。 CE 和 DOP 的意見反應會被一律保存。 需要啟用資料庫的 Query Store 並設置為 READ_WRITE 模式。
選擇性參數計劃優化 (OPPO) 是的,從資料庫相容性等級 170 開始,Azure SQL Managed Instance 將支援 SQL Server 2025Always-up-to-date更新政策。 不,這是針對 SQL Server 2022 更新政策 利用參數敏感計劃優化(PSPO)所帶來的調適型計劃優化(Multiplan)基礎架構,從單一句子產生多個計劃。 此功能可以在執行階段根據參數是否為 NULL OR NOT NULL 選擇最佳的計劃,這可改善查詢的效能,避免在此類查詢模式中預設為不佳的效能。
使用查詢存放區的優化計劃強制執行 減少重複強制查詢的編譯額外負荷。 更多資訊請參見使用查詢存放區的最佳化計劃強制執行
參數敏感計畫最佳化 是,從資料庫相容性層級 160 開始 參數敏感度方案優化旨在解決參數化查詢的單一快取方案對於所有可能的傳入參數值而言並非最佳解決方案的情況,例如非均勻分佈的數據。
純量 UDF 內嵌 是,從資料庫相容性層級 150 開始 純量 UDF 會被轉換成「內嵌」在呼叫查詢中的對等關聯運算式,而這通常可讓效能大幅提升。
資料表變數延後編譯 是,從資料庫相容性層級 150 開始 使用在第一次編譯時遇到的資料表變數的實際基數,而非固定的預測值。

SQL Server 2019 的 IQP 功能

IQP 功能 支援於 SQL Server 2019(15.x) Description
調適性聯結 (批次模式) 是的,從 SQL Server 2017(14.x)開始,資料庫相容性等級為 140 自適性聯結會在執行階段,依據實際輸入列而機動選取聯結類型。
近似相異值計數 Yes 提供對巨量數據案例的近似 COUNT DISTINCT 值,並具有高效能和低記憶體使用量的優勢。
資料列存放區上的批次模式 是,從資料庫相容性層級 150 開始 為耗用大量 CPU 的關聯式 DW 工作負載提供批次模式,而且不需要資料行存放區索引。
交錯執行 是,從資料庫相容性層級 140 開始 使用在第一次編譯時遇到的多語句資料表值函式的實際基數,而不是固定的猜測。
記憶體授權反饋 (批次模式) 是,從資料庫相容性層級 140 開始 若批次模式查詢的作業會寫入磁碟,請為後續執行新增記憶體。 若查詢浪費了 > 50% 配置給它的記憶體,請縮減記憶體授與大小以便後續執行。
記憶體配額反饋 (資料列模式) 是,從資料庫相容性層級 150 開始 若資料列模式查詢中的作業存取磁碟,請新增記憶體以提升後續執行效能。 若查詢浪費了 > 50% 配置給它的記憶體,請縮減記憶體授與大小以便後續執行。
純量 UDF 內嵌 是,從資料庫相容性層級 150 開始 純量 UDF 會被轉換成「內嵌」在呼叫查詢中的對等關聯運算式,而這通常可讓效能大幅提升。
資料表變數延後編譯 是,從資料庫相容性層級 150 開始 使用在第一次編譯時遇到的實際資料表變數基數,而不是固定的估算。

SQL Server 2017 的 IQP 功能

IQP 功能 支援於 SQL Server 2017(14.x) Description
調適性聯結 (批次模式) 是的,從 SQL Server 2017(14.x)開始,資料庫相容性等級為 140 自適性聯結會在執行階段,依據實際輸入列而機動選取聯結類型。
近似相異值計數 Yes 提供對巨量數據案例的近似 COUNT DISTINCT 值,並具有高效能和低記憶體使用量的優勢。
交錯執行 是,從資料庫相容性層級 140 開始 使用在第一次編譯時遇到的多語句資料表值函式的實際基數,而不是固定的猜測。
記憶體授權反饋 (批次模式) 是,從資料庫相容性層級 140 開始 若批次模式查詢的作業會寫入磁碟,請為後續執行新增記憶體。 若查詢浪費了 > 50% 配置給它的記憶體,請縮減記憶體授與大小以便後續執行。

Query Store 需求

智慧查詢處理功能的部分需要啟用 Query Store,才能讓使用者資料庫受益。 要啟用Query Store,請參見 啟用 Query Store

IQP 功能 需要啟用查詢存放區(Query Store)且READ_WRITE
調適性聯結 (批次模式) No
近似相異值計數 No
近似百分位數 No
資料列存放區上的批次模式 No
基數估計 (CE)回饋 Yes
平行處理度 (DOP) 反饋 Yes
交錯執行 No
記憶體授權反饋 (批次模式) No
記憶體配額反饋 (資料列模式) No
記憶體授與回饋(百分位數與持續性模式) Yes
使用查詢存放區的優化計劃強制執行 Yes
純量 UDF 內嵌 No
參數敏感計畫最佳化 否,但建議使用
資料表變數延後編譯 No