14

いくつかの一時テーブルを作成し、それらにデータを挿入するクエリがあります。私が理解していることから、これはテーブル スプールの潜在的な原因です。実行計画を見ると、処理の大部分がテーブル スプールに費やされています。この種のパフォーマンスの問題を改善するための優れた手法はありますか? ビューまたは CTE を使用すると、一時テーブルよりもメリットがありますか?

また、各テーブル スプールにマウスを合わせると、出力リストが同じ一時テーブルからのものであることに気付きました。

4

1 に答える 1

22

ええと、あなたが提供した情報から言えることは、クエリ オプティマイザーが可能な限り最良のプランを選択したということだけです。テーブルスプールを使用して実行を高速化します。テーブルスプールを使用しない代替手段はさらに遅くなります。

クエリ、テーブルのスキーマとカーディナリティ、および計画を表示するのはどうですか。

アップデート

クエリを表示できない場合は、もちろん理解しています。しかし、詳細を知らずにエンジンがスプーリングを優先する理由を推測するのは非常に困難です。Craig Freedman のブログに目を通すことをお勧めします。彼はクエリ オプティマイザー チームのエンジニアであり、SQL 2005/2008 オプティマイザーの内部動作について多くのことを説明しています。スプーリングの話題に何らかの形で触れているものをすぐに見つけることができたいくつかのエントリを次に示します。

SQL カスタマー サポート チームの興味深いブログ ( http://blogs.msdn.com/psssql/
) もあり、 「sqltips」(リレーショナル エンジンのチーム ブログ) には、クエリ プランのスプール演算子などのヒントがあります...

于 2009-12-18T23:35:35.130 に答える