Applies ToSQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1

現象

Microsoft SQL Server 2014 または2016でビューにクエリを実行する場合、SQL Server 2008 R2 の実行結果と比較したときに、実行に時間がかかる場合があります。 

UNION ALL と行のゴール (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 console コマンドとトレースフラグ

SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。

SQL Server 2016 の最新の累積的な更新プログラム

SQL Server 2014 の最新の累積的な更新プログラム

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

関連情報

ソフトウェアの更新を説明するために Microsoft が使用する 用語について説明します。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。