1
กฎใดที่กำหนดเมื่อ SQL Server ใช้ CTE เป็น "รั้วการปรับให้เหมาะสม"
ในขณะที่กลับมา Brent Ozar เผยแพร่โพสต์รายละเอียดบางส่วนของความแตกต่างระหว่าง SQL Server และ PostgreSQL: ความแตกต่างที่สำคัญสองประการระหว่าง SQL Server กับ PostgreSQL จุดแรก (“ CTE เป็นรั้วการเพิ่มประสิทธิภาพ”) จับตาของฉันเพราะเห็นได้ชัดว่าในตัวอย่างที่มีให้ SQL Server รวม CTE และแบบสอบถามหลักเข้าด้วยกันและปรับให้เป็นแบบสอบถามเดียว (ตรงข้ามกับพฤติกรรมตรงข้ามใน PostgreSQL) อย่างไรก็ตามพฤติกรรมนี้ดูเหมือนจะตรงกันข้ามกับตัวอย่างที่ฉันเห็นในบล็อกและคลาสฝึกอบรมอื่น ๆ ที่ SQL Server ใช้ CTE เป็นรั้วการปรับให้เหมาะสมซึ่งช่วยให้ใช้ดัชนีได้ดีขึ้นประสิทธิภาพที่ดีขึ้นเป็นต้นตัวอย่างเช่น วิธีที่ดีกว่าในการเลือกดาว ดังนั้นดูเหมือนว่า SQL Server จะ "ให้เกียรติ" CTE เป็นกรอบการเพิ่มประสิทธิภาพบางครั้ง มีทรัพยากรที่ดีใดบ้างที่บันทึกรายการเฉพาะของกรณีที่ทราบซึ่ง SQL Server จะให้เกียรติ CTE อย่างน่าเชื่อถือเป็นรั้วการเพิ่มประสิทธิภาพ (หรือพฤติกรรมที่ตรงกันข้าม)