更新プログラムにより、SQL Server 2016 にクエリ ヒント引数である USE HINT を導入する

適用対象: SQL Server 2016 DeveloperSQL Server 2016 EnterpriseSQL Server 2016 Enterprise Core

概要


この更新プログラムにより、新しいクエリ ヒント引数である USE HINT が導入され、資格の昇格や sysadmin サーバー ロールのメンバーシップなしにクエリ オプティマイザーが使用可能になります。この新しいクエリ ヒントの構文は以下のようになります。

<query_hint > ::=
{
USE HINT(N'key' [ [, ]...n ])
}





この更新プログラムでは、USE HINT 引数とともに使用可能な以下のヒント オプションも導入されます。

オプション同等のトレース フラグ説明
FORCE_LEGACY_CARDINALITY_ESTIMATION TF 9481データベースの互換性レベルに関係なく、SQL Server 2012 以前のバージョンに対して、クエリ オプティマイザーの基数推定モデルを設定可能にします
ENABLE_QUERY_OPTIMIZER_HOTFIXES TF 4199SQL Server の累積的な更新プログラムと Service Pack でリリースされたクエリ オプティマイザーの変更を制御します
DISABLE_PARAMETER_SNIFFING TF 4136OPTION(RECOMPILE)WITH RECOMPILE、および OPTIMIZE FOR で設定中の場合を除き、パラメーター スニッフィングを無効化します
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES TF 4137SQL Server 2012 以前のバージョンでのクエリ オプティマイザー の基数推定モデルにおいて、相関関係を特定するためにフィルターで AND 述語を推定する際に最小の選択度を使用することにより、SQL Server にプランを生成させます
DISABLE_OPTIMIZER_ROWGOAL TF 4138SQL Server において、TOP、OPTION (FAST N)、IN、および EXISTS のキーワードを含むクエリによる行の目標調整を実行せずにプランを生成させます
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS TF 4139キー列の状態に関係なく、簡易統計 (ヒストグラムの修正) の自動生成を有効化します。このオプションを使用した場合、キー統計列の状態 (昇順、降順、固定) に関係なく、基数推定に使用したヒストグラムがクエリのコンパイル時に調整されます。
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS TF 9476SQL Server の 2014 から 2016 までのバージョンのクエリ オプティマイザーの基数推定モデルにおいて、既定のベース コンテインメント前提の代わりにシンプル コンテインメント前提を使用し、SQL Server にプランを生成させます
DISABLE_OPTIMIZED_NESTED_LOOP TF 2340SQL Server で、プランの生成時に、最適化済みの入れ子になったループ結合に並べ替え操作 (バッチの並び替え) が使用されないようにします
FORCE_DEFAULT_CARDINALITY_ESTIMATION TF 2312データベースの互換性レベルに応じて、SQL Server の 2014 から 2016 までのバージョンに対して、クエリ オプティマイザーの基数推定モデルを設定可能にします

詳細


この更新プログラムは、SQL Server 2016 の Service Pack 1 に含まれています。

SQL Server のクエリ オプティマイザー (QO) の動作を手がかりにする必要があるシナリオはよく見られますが、従来は (登録済みと未登録の) トレース フラグをいくつか参照してこのようなシナリオを解決していました。ただし、トレース フラグをグローバルに設定すると、他の処理に悪影響を及ぼすことがあります。さらに、セッションごとに有効化するのは既存のアプリケーションにとって実用的ではなく、OPTION QUERYTRACEON でクエリごとに有効化する場合にも sysadmin 固定サーバー ロールのメンバーシップが必要になります(プラン ガイドまたはストアド プロシージャを使用するとこのような設定を回避できますが、資格の昇格は必要です)。

トレース フラグは、特定サーバーの特性に関する一時設定や特定の動作のスイッチ オフに使用されますが、その設定の管理や理解が難しい場合もあります。

トレース フラグの詳細については、Microsoft Developer Network (MSDN) の Trace Flags (Transact-SQL) (英語情報) を参照してください。

関連情報


マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集 を参照してください。