CTE hanyalah sebuah alias untuk kueri.
Ini mungkin (atau mungkin tidak) dijalankan ulang setiap kali digunakan.
Tidak ada cara bersih untuk memaksa CTE perwujudan dalam SQL Server (seperti /*+ MATERIALIZE */ Oracle Oracle ), dan Anda harus melakukan trik kotor seperti ini:
CTE dapat meningkatkan kinerja jika digunakan dalam rencana yang hanya membutuhkan satu evaluasi (seperti HASH JOIN , MERGE JOIN dll.).
Dalam skenario ini, tabel hash akan dibuat langsung dari CTE , saat menggunakan tabel temp akan memerlukan evaluasi CTE , menarik hasilnya ke tabel temp dan membaca tabel temp sekali lagi.