この優れたSO の質問CTE
では、との違いsub-queries
について説明しました。
具体的にお聞きしたいのですが、
次のそれぞれは、どのような状況でより効率的/高速になりますか?
- CTE
- サブクエリ
- 一時テーブル
- テーブル変数
伝統的に、私はtemp tables
開発中に多くのサブクエリを使用してきました。stored procedures
それらは、多くの絡み合ったサブクエリよりも読みやすいように見えるからです。
Non-recursive CTE
データのセットを非常にうまくカプセル化し、非常に読みやすくなっていますが、常にパフォーマンスが向上すると言える特定の状況はありますか? それとも、最も効率的な解決策を見つけるために、さまざまなオプションを常にいじる必要があるのでしょうか?
編集
私は最近、効率の観点から、関連するヒストグラム、つまり統計があるため、一時テーブルが最初の選択肢として適していると言われました。