メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

現象

Microsoft SQL Server のクエリ実行プランによっては、テーブルやインデックスのスキャンまたは範囲操作の前に、フィルターの評価パターンが含まれているものがあります。たとえば、フィルター述語の一部がインデックス キーと一致している場合、インデックス シークや範囲スキャンの実行に使用されることがあります。述語の残りの部分を "残余" といい、スキャンまたは範囲操作で出力されるあらゆる行で評価される必要があります。これは、フィルター演算子に対応します。なお、SQL Server では、パフォーマンスを向上するために、これらのフィルターをテーブル アクセスの演算子自体にプッシュダウンすることもできます。

この処理によって全体的なパフォーマンスが向上しますが、状況によっては (パラメーター感度に関連する基数推定が不正確な場合など)、述語で指定されたスキャン フィルターで処理している行数が想定よりも多くなる場合があります。このことは、実際の実行プランを使ってクエリのパフォーマンスのトラブルシューティングを行うときに、表面に出ない可能性があります。というのも、返される行数は、残余述語が適用された後の行数であり、テーブルやインデックスからスキャンされた実際の行数ではないからです。

解決方法

上の「現象」で説明した診断機能改善のために、SQL Server 2012 Service Pack 3 (SP3) と SQL Server 2014 SP2 に、XML プラン表示の Actual Rows Read という新しい属性が導入されています。この属性は、残余述語が適用される前に、演算子によって実際に読み取られた行数を示します。

この機能は、SQL Server の次の Service Packs で最初に導入されました。 

SQL Server 2012 Service Pack 3 (SP3) の詳細については、bugs that are fixed in SQL Server 2012 Service Pack 3 (英語情報) を参照してください。

SQL Server 2014 Service Pack 2 のリリース情報

SQL Server 2016 Service Pack 1 (SP1) 


SQL Server の Service Pack について

Service Pack は累積的であり、最新の Service Pack には新しい修正プログラムと共に、それ以前の Service Pack に含まれていたすべての修正プログラムが含まれています。最新の Service Pack を適用してから、その Service Pack の累積的な更新プログラムを適用することをお勧めします。最新の Service Pack をインストールする前に、以前の Service Pack をインストールする必要はありません。最新の Service Pack と最新の累積的な更新プログラムの詳細については、次のサポート技術情報の記事の表 1 を参照してください。

SQL Server とそのコンポーネントのバージョンとエディションを確認する方法

状況

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

ヘルプを表示

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

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

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

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×