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