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.