複雑なクエリを手作業でselect [...] into #t
のチェーンに分割してからselect [...] from #t [...]
にすると、視覚的に高速になります。これは、悪い設計によって引き起こされた可能性があります。SQLエンジン/オプティマイザはテンポラリ・テーブルを使用してクエリを実行できますか?
それにもかかわらず、SQLエンジン/オプティマイザは、このようなテンポラリテーブルを使用することが有用であると考えているのでしょうか?
私が上記の手動分割の種類が大幅にパフォーマンスを向上させる場合は、元のビュー/基礎となるテーブルの設計に大きな欠陥があることを意味しますか?
私はこの質問が好きですが、それは少し幅があり、基本的にはSQL Serverエンジンの最適化の内部動作を説明することになります。そのような一時テーブルを使用して大きなクエリを分解し、一般にパフォーマンスを向上させます。私はそれを、より管理しやすい小規模のチャンクに大量のタスクを分割するように見ています。 SQL Serverに膨大なクエリを与えると、クエリ全体を評価して最適化します。実際に最適化された3つのクエリを与えると、SQL Serverには行う。 – Tanner
SQL Serverも同様のことを自動的に行うことができ、クエリプランのスプールとして見ることができます。 Rob Farleyの[ブログの投稿](http://sqlblog.com/blogs/rob_farley/archive/2013/06/11/spooling-in-sql-execution-plans.aspx) –