摘要
此更新引進了新的 query 提示引數,使用提示可讓您以無提升認證的方式驅動查詢優化程式,或不是 sysadmin 伺服器角色的成員。 這個新查詢提示的語法如下所示:
<query_hint > ::={USE HINT(N'key' [ [, ]...n ])}
此更新程式也會引入下列提示選項,這些選項可與 USE 提示 引數搭配使用。
件 |
對等追蹤標誌 |
描述 |
適用于 |
---|---|---|---|
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS |
TF 9476 |
使 SQL Server 使用簡單的包容假設(而不是連接的預設基本包容假設)來產生查詢方案(在查詢最佳化工具下方) SQL Server 2014 (12. x)或更新版本的基數估計模型。 |
|
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES |
TF 4137 |
使 SQL Server 在評估與需要相關的篩選器謂語時,使用最小選擇性來產生方案。此提示名稱會平行于 在 sql server 2012 (11. x)與較舊版本的基數估計模型搭配使用追蹤標記9471 與基數估計模型為 sql server 2014 (12. x)或更高版本時,追蹤標誌4137。 |
|
DISABLE_BATCH_MODE_ADAPTIVE_JOINS |
停用批次模式自我調整連接。 |
從 SQL Server 2017 開始 |
|
DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK |
停用批次模式記憶體授與意見反應。 |
從 SQL Server 2017 開始 |
|
DISABLE_DEFERRED_COMPILATION_TV |
停用表格變數延遲編譯。 |
從 SQL Server 2019 開始 |
|
DISABLE_INTERLEAVED_EXECUTION_TVF |
停用多語句資料表值函數的交叉執行。 |
從 SQL Server 2017 開始 |
|
DISABLE_OPTIMIZED_NESTED_LOOP |
TF 2340 |
在產生查詢方案時,指示查詢處理器不要使用排序運算(批次排序)來優化嵌套迴圈連接。 |
|
DISABLE_OPTIMIZER_ROWGOAL |
TF 4138 |
使 SQL Server 產生無法將資料行目標修改用於包含這些關鍵字之查詢的方案:
|
|
DISABLE_PARAMETER_SNIFFING |
TF 4136 |
指示查詢最佳化工具在使用一或多個參數編譯查詢時,使用平均資料分配。這個指令可讓查詢計劃獨立于編譯查詢時第一次使用的參數值。使用這個提示來覆寫資料庫範圍的 設定設定 PARAMETER_SNIFFING = OFF. |
|
DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK |
停用列模式記憶體授與意見反應。 |
從 SQL Server 2019 開始 |
|
DISABLE_TSQL_SCALAR_UDF_INLINING |
停用 [標量 UDF 內嵌]。 |
從 SQL Server 2019 開始 |
|
DISALLOW_BATCH_MODE |
停用批次模式執行。 |
從 SQL Server 2019 開始 |
|
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
TF 4139 |
針對需要基數估計的任何前導索引欄,啟用自動產生的快速統計資料(長條圖修正)。 用來評估基數的長條圖將會在查詢編譯時間調整,以考慮此資料行的實際最大值或最小值。 |
|
ENABLE_QUERY_OPTIMIZER_HOTFIXES |
TF 4199 |
啟用查詢最佳化工具修復程式(在 SQL Server 累計更新和 Service Pack 中發佈的變更)。 使用此提示來覆寫 資料庫範圍 的配置設定 QUERY_OPTIMIZER_HOTFIXES = 開啟. |
|
FORCE_DEFAULT_CARDINALITY_ESTIMATION |
TF 9481 |
強制使用查詢優化程式 與目前資料庫相容性等級相對應的基數估計模型。使用此提示來覆寫資料庫範圍 的配置設定 LEGACY_CARDINALITY_ESTIMATION = 開啟。 |
|
FORCE_LEGACY_CARDINALITY_ESTIMATION |
TF 9481 |
強制使用查詢優化程式 SQL Server 2012 (11. x)及較舊版本的基數估計模型。使用這個提示來覆寫資料庫範圍的配置設定 LEGACY_CARDINALITY_ESTIMATION = 開啟. |
|
QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n |
在查詢層級強制執行查詢優化程式列為。這種行為的發生方式就是使用資料庫相容性等級編譯查詢 n,其中n是支援的資料庫相容性等級。請參閱sys.dm_exec_valid_use_hints ,以取得目前支援之 n 個值的清單。 |
在 SQL Server 2017 (十四)中開始(CU10) |
如需詳細資訊,請參閱 提示(Transact-sql)-Query。
其他相關資訊
此更新包含在 SQL Server 2016 的 Service Pack 1 中。
每個新組建的 SQL Server 2016 包含所有的修復程式,以及先前組建中所包含的所有安全性修正程式。 我們建議您安裝 SQL Server 2016 的最新組建。
在下列情況中,SQL Server 查詢優化程式(QO)行為必須是相當常見的方式,而且傳統的是使用幾個(已記錄且未記錄的)追蹤標記來解決這些問題。 不過,在全域設定追蹤旗標時,它們可能會對其他工作負載產生負面影響。 此外,針對現有的應用程式啟用它們,並讓每個查詢都能使用選項 QUERYTRACEON ,讓他們能夠使用 sysadmin 固定伺服器角色的成員資格。 (雖然您可以使用「規劃指南」或「儲存程式」)來解決這種行為,但仍需要提升的認證。追蹤標記是用來暫時設定特定伺服器的特性,或關閉特定行為,可能難以管理和理解。如需有關追蹤標誌的詳細資訊,請參閱 Microsoft 開發人員網路(MSDN)網站上的追蹤標誌(transact-sql) 主題。
參考
瞭解 Microsoft 用於描述軟體更新的 詞彙。