CTE
クエリの単なるエイリアスです。
使用されるたびに再実行される場合もあれば、再実行されない場合もあります。
CTE
を強制するクリーンな方法はありません SQL Server
での実体化 (Oracle の /*+ MATERIALIZE */
のように )、そして次のような汚いトリックを行う必要があります:
CTE
1 回の評価しか必要としないプランで使用すると、パフォーマンスが向上する可能性があります (HASH JOIN
など)。 , MERGE JOIN
など)
これらのシナリオでは、ハッシュ テーブルは CTE
から直接構築されます。 、一時テーブルを使用すると CTE
を評価する必要があります 、結果を一時テーブルにプルし、一時テーブルをもう一度読み取ります。