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