Applies ToSQL Server 2016 Standard - 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 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core SQL 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 2017 累積更新プログラム 3 (CU3 以降で) および Microsoft SQL Server 2016 Service Pack 2 (SP2) に、新しい EstimateRowsWithoutRowGoal クエリ実行プラン属性を追加します。

クエリオプティマイザーは、クエリ実行プランのコストを推定するとき、通常、すべてのソースからのすべての修飾行を処理する必要があることを前提としています。 ただし、クエリによっては、クエリオプティマイザーによって、行数の少ないより小さい行数を返すプランが検索されることがあります。 この問題は、クエリでTOP句、 FAST number_rowsクエリヒント、 INまたはEXISTS句、またはSET ROWCOUNT {number | @number_var}ステートメントが使用されている場合に発生する可能性があります。 この場合、オプティマイザーは、クエリプランを推定するときに、行の目標を使用しています。 行の目標計画が適用されると、クエリ実行プランの行数の推定値が減少します。 これは、プランでは、行の目標に到達するために、少数の行を処理する必要があることを前提としているためです。

注: 行の目標を使用して行われた推定は概数です。 実際のデータ分布が一貫していない場合は、処理する必要がある実際の行数よりも小さい可能性があります。 そのため、効率の低いクエリプランを作成する可能性があります。 この問題の回避策として、 USE HINT (' DISABLE_OPTIMIZER_ROWGOAL ') クエリオプションまたはトレースフラグ4138を使うことができます。

詳細については、「 更新プログラムによる SQL Server 2016 の USE hint クエリヒント引数の概要」を参照してください。 ただし、行の目標が適用されているかどうか、およびプランの選択肢に影響を与えるかどうかを、複雑なクエリで識別することが難しい場合があります。

EstimateRowsWithoutRowGoal属性を使用することで、結果をEstimateRows属性の結果と比較して、クエリオプティマイザーの推定値がどの程度の目標に影響するかを確認できます。

注: 行の目標が特定のクエリプランの演算子に適用されていない場合、この属性は含まれません。

詳細情報

この更新プログラムは、SQL Server の次の累積的な更新プログラムに含まれています。

       SQL Server 2017 の累積的な更新プログラム 3

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

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

SQL Server の Service pack 情報

この更新プログラムは、SQL Server 用の次の service pack で導入されています。

       Service Pack 2 for SQL Server 2016

       Service Pack 3 for SQL Server 2014

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

SQL Server とそのコンポーネントのバージョン、エディション、および更新プログラムのレベルを確認する方法

参照情報

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

ヘルプを表示

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

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

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