徵狀

當您在 Microsoft SQL Server 2014 或2016中查詢檢視時,如果您將它與 SQL Server 2008 R2 中的執行進行比較,可能需要花很長的時間才能完成。 

當您執行使用 UNION ALL 和 row 目標(例如 TOP N 子句、FAST N 或 EXISTS 謂語)的查詢時,您可能會發現,如果您將它與 SQL Server 2008 R2 進行比較,則在 SQL Server 2014 或更新版本中查詢的執行速度會變慢。

原因

在 SQL Server 2008 R2 中,當有資料列的情況下,查詢最佳化工具會變更 [UNION ALL] 底下的不同部分順序,讓最便宜的部分排在最前面。 這可讓查詢在較便宜的部分產生所需的列數,而不需繼續執行更昂貴的部分,以提前完成執行。 此類重新排序不會發生在 SQL Server 的後續版本中。

解決方案

此問題已在下列 SQL Server 累積更新中修正:

       SQL Server 2016 RTM 的累積更新7

       SQL Server 2016 SP1 的累積更新4

       SQL Server 2014 SP2 累積更新6

注意:  必須針對此問題啟用 [查詢 Optimiser]。 

如需有關查詢優化程式和追蹤旗標的詳細資訊,請參閱下列連結:

SQL Server 查詢優化程式修補程式的 TF 4199 服務模型

DBCC 主控台命令和追蹤旗標

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

SQL Server 2016 的最新累計更新

SQL Server 2014 的最新累計更新

狀態

Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。

參考

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

Need more help?

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

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×