KB4051361-在 SQL Server 2014、2016和2017中新增查詢執行方案中的 [優化器] 資料列目標資訊

摘要

將新的 EstimateRowsWithoutRowGoal 查詢執行方案屬性新增至 SQL Server 2017 累計更新3(CU3)與 Microsoft SQL Server 2016 Service Pack 2 (SP2)。

當查詢優化程式估計查詢執行方案的成本時,通常會假設必須處理所有來源的所有合格資料列。 不過,有些查詢會讓查詢最佳化工具搜尋將較小的列數較快傳回的方案。 如果查詢使用TOP子句、 FAST number_rows查詢提示、 INEXISTS子句,或SET ROWCOUNT {number | @number_var}語句,就會發生這種情況。 在這種情況下,優化程式會在估計查詢方案時使用列目標。 如果套用了 [資料列目標計畫],就會減少查詢執行方案中的估計列數。 這是因為計畫假設必須處理較少的資料列,才能達到資料列目標。

注意: 使用資料列目標所做的估計是近似值。 如果實際的資料分配不一致,可能會小於必須處理的實際資料列數。 因此,它可能會建立低效的查詢方案。 如有此問題的因應措施,您可以使用 USE 提示("DISABLE_OPTIMIZER_ROWGOAL") 查詢選項或 [追蹤旗標 4138]。

如需詳細資訊,請參閱 更新在 SQL Server 2016 中引入了 [使用提示查詢提示] 引數。 不過,在複雜的查詢中找出是否已套用資料列目標,以及影響方案選擇的程度,可能會有困難。

您可以使用 EstimateRowsWithoutRowGoal屬性,將結果與 EstimateRows 屬性的結果進行比較,以查看列目標對查詢優化程式估計值有何影響。

注意: 如果資料行目標並未套用至特定的查詢方案運算子,就不會包含此屬性。

其他相關資訊

此更新包含在 SQL Server 的下列累積更新中:

       SQL Server 2017 累積更新 3

每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:

SQL Server 2017 的最新累計更新

SQL Server Service pack 資訊

下列 SQL Server service pack 中引進了此更新:

       SQL Server 2016 Service Pack 2

       SQL Server 2014 Service Pack 3

Service pack 是累加的。 每個新的 service pack 都包含舊版 service pack 中的所有修正程式,以及任何新的修正程式。 我們建議您將最新的 service pack 和該 service pack 的最新累計更新套用。 在安裝最新的 service pack 之前,您不需要安裝舊版 service pack。 使用下列文章中的表格1,尋找最新 service pack 和最新累計更新的詳細資訊。

如何判斷 SQL Server 及其元件的版本、版本與更新層級

參考

瞭解 Microsoft 用於描述軟體更新的 詞彙

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

×