SQL Server 2012年または SQL Server 2014年でテーブル変数を使用すると、修正プログラム: パフォーマンスが低下

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:2952444
現象
多数の行を持つテーブル変数を作成し、他のテーブルと結合すると、クエリ オプティマイザーがクエリのパフォーマンスが低下する可能性があります、効率の悪いクエリ プランを選択します。
解決方法
この修正プログラムを適用した後を有効にできますトレース フラグ 2453 に十分な数の行が変更されたときに再コンパイルをトリガーするテーブル変数を使用します。これにより、クエリ オプティマイザーがより効率的なプランを選択することができます。

次の累積的な更新プログラムでこの問題を最初に修正または/および SQL Server のサービス パックです。

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

SQL Server 用の累積的な更新プログラムのバージョン情報

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

SQL Server 2012年のサービス パック 2

SQL Server のサービス パックについて

サービス パックは累積されます。各新しいサービス パックには、すべての新しい修正プログラムと共に、以前の service pack に含まれるすべての修正プログラムが含まれています。推奨では、最新の service pack と service pack の最新バージョンの累積的な更新を適用します。最新の service pack をインストールする前に、以前の service pack をインストールする必要はありません。最新の累積的な更新と service pack の詳細についてを検索するには、次の資料の表 1 を使用します。

詳細
バッチまたはプロシージャでテーブル変数を使用すると、クエリがコンパイルされ、テーブル変数の最初の空の状態用に最適化されます。このテーブル変数は実行時に複数の行に設定されている場合、事前にコンパイルされたクエリ プランが最適不要になったことがあります。たとえば、クエリ可能性があります参加するループの入れ子になったテーブル変数の行の数が少ない方が効率的であるためです。このクエリ プランは、数百万行をテーブル変数がある場合に効率的なことができます。ハッシュ結合には、このような条件の下で適切な選択可能性があります。新しいクエリ プランを取得するには、再コンパイルする必要があります。他のユーザーまたは一時テーブルを使用するとは異なりただし、テーブル変数の行の数の変更は発生しません、クエリの再コンパイルします。通常、回避できますこれでオプション (再コンパイル)、オーバーヘッド ・ コストを持っています。
2453 のトレース フラグは、クエリの再コンパイルしなくてもオプション (再コンパイル) の利点を使用できます。このトレース フラグには、2 つの主要な側面でのオプション (再コンパイル) が異なります。
(1) は、他のテーブルと同じ行カウントのしきい値を使用します。クエリとは異なりオプション (再コンパイル) 実行されるたびにコンパイルする必要はありません。行の数の変更は、定義済みのしきい値を超えた場合にのみ再コンパイルが発生しています。
(2) オプション (再コンパイル) では、パラメーターを見るし、それらのクエリを最適化するクエリを強制します。このトレース フラグは、パラメーターのピークを強制しません。

このトレース フラグは、実行時に ON をする必要があります。QUERYTRACEON では、このトレース フラグを使うことはできません。このトレース フラグは、クエリ最適化の向上によるコスト削減をより費用がかかりますが、クエリの再コンパイルの数を増やすことができますので、注意して使用する必要があります。
状況
マイクロソフトは、この問題を「対象製品」セクションに記載されているマイクロソフト製品の問題として認識しています。

警告: この記事は自動翻訳されています

プロパティ

文書番号:2952444 - 最終更新日: 02/22/2016 07:00:00 - リビジョン: 3.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2952444 KbMtja
フィードバック