現象
次のような状況で問題が発生します。
-
SQL Server 2014 または2016の一意の GUID 列で、等号以外の述語を使用しているクエリがあります。
-
統計情報は、既定のサンプリングを使用して更新されます。 または、最後の統計更新の後に、新しい行がテーブルに挿入されます。
-
SQL Server では、データベース互換モードが120に設定されている新しい基数の推定が使用されます。
-
GUID 値は、テーブル全体で均等に分散されません。
この例では、クエリを実行したときに、クエリプランの述語の行数が間違って推定されているため、パフォーマンスが低下することがあります。
解決方法
この問題は、SQL Server の次の累積的な更新プログラムで最初に修正されました。
Sql server 2014 Service Pack 1 forsql server 2016 の累積更新プログラム1の累積更新プログラム6この累積的な更新プログラムパッケージをインストールした後、トレースフラグ4199を有効にする必要があります。 これを行うには、 -T4199 スタートアップパラメーターを追加します。 または、特定のセッションに対して dbcc traceon (4199)ステートメントを使用することができます。
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。
SQL Server 2014 の最新の累積的な更新プログラムSQL Server 2016 の最新の累積的な更新プログラム
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
関連情報
Microsoft でソフトウェアの更新について説明する 用語 について説明します。