共用方式為


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

適用於:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric 中的 SQL 資料庫

智慧查詢處理 (IQP) 功能系列包含具有廣泛影響的功能,能夠以最少的實作投入量來採用,以改善現有工作負載的效能。 下圖說明了 IQP 功能系列的詳情,以及第一次針對 SQL Server 引進的時機。 所有 IQP 功能都可在 Azure SQL 受控執行個體 和 Azure SQL Database 中使用。 某些功能的實際提供情況,依資料庫的相容性層級而定。

圖示顯示智慧查詢處理家族的功能及其在 SQL Server 中引入的時間。

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

 

如須查看 GitHub 提供的智慧型查詢處理 (IQP) 功能示範與程式碼範例,請造訪 https://aka.ms/IQPDemos (英文)。

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

ALTER DATABASE [WideWorldImportersDW]
    SET COMPATIBILITY_LEVEL = 170;

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

Azure SQL 資料庫與 SQL Server 2025 的 IQP 功能

IQP 功能 Azure SQL 資料庫不支援 支援於 SQL Server 2025(17.x) Description
選擇性參數計劃優化 (OPPO) No 是的,從 SQL Server 2025(17.x)開始,相容等級為 170 利用參數敏感計劃優化(PSPO)所帶來的調適型計劃優化(Multiplan)基礎架構,從單一句子產生多個計劃。 此功能可以在執行階段根據參數是否為 NULL OR NOT NULL 選擇最佳的計劃,這可改善查詢的效能,避免在此類查詢模式中預設為不佳的效能。
表達式的基數估計(CE)反饋 No 是的,從 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 資料庫不支援 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 開始 會自動調整重複查詢的平行處理原則程度,將平行處理原則效率不佳而可能導致效能問題的工作負載最佳化。 必須啟用查詢存放區。
交錯執行 是,從資料庫相容性層級 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 開始 可提供新功能來保存記憶體授與意見反應。 需要啟用查詢存放區,以便資料庫處於 READ_WRITE 模式。
CE 意見反應持續性 是,從資料庫相容性層級 160 開始 是,從 SQL Server 2022 (16.x),資料庫相容性層級 160 開始 需要啟用查詢存放區,以便資料庫處於 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 受控執行個體的 IQP 功能

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

查詢存放區需求

有數個智慧型查詢處理功能套件都需要啟用查詢存放區,才能讓使用者資料庫受益。 若要啟用查詢存放區,請參閱啟用查詢存放區 (機器翻譯)。

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