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