Beberapa waktu yang lalu, Brent Ozar menerbitkan sebuah pos yang merinci beberapa perbedaan antara SQL Server dan PostgreSQL:
Dua Perbedaan Penting Antara SQL Server dan PostgreSQL
Poin pertama ("CTE adalah pagar optimasi") menarik perhatian saya, karena jelas bahwa dalam contoh yang diberikan, SQL Server menggabungkan CTE dan kueri utama bersama-sama dan mengoptimalkannya sebagai kueri tunggal (sebagai lawan dari perilaku berlawanan di PostgreSQL).
Namun, perilaku ini tampaknya bertentangan dengan contoh yang saya lihat di blog lain dan kelas pelatihan, di mana SQL Server memperlakukan CTE sebagai pagar pengoptimalan, yang memungkinkan penggunaan indeks yang lebih baik, kinerja yang lebih baik, dll. Misalnya:
Cara Yang Lebih Baik Untuk Memilih Bintang
Jadi, sepertinya SQL Server "menghormati" CTE sebagai pagar pengoptimalan TERKADANG. Apakah ada sumber daya baik yang tersedia yang mendokumentasikan daftar kasus tertentu yang diketahui di mana SQL Server akan secara andal menghormati CTE sebagai pagar pengoptimalan (atau perilaku yang berlawanan)?
sumber