4
เป็นไปได้หรือไม่ว่าคำสั่งนั้นจะไม่รับประกันสำหรับตารางที่ซ้ำซ้อนนี้
ฉัน stumbled เมื่อคำถามนี้ในการสนทนา Twitter กับ Lukas เอ๊ด แม้ว่าพฤติกรรมที่ถูกต้องจะใช้คำสั่งย่อย ORDER BY กับการสืบค้นนอกสุดเนื่องจากที่นี่เราไม่ได้ใช้ DISTINCT, GROUP BY, JOIN หรือส่วนคำสั่ง WHERE ใด ๆ ในการค้นหานอกสุดทำไม RDBMS ถึงไม่ผ่าน ข้อมูลที่เข้ามาในขณะที่มันถูกจัดเรียงตามแบบสอบถามภายใน? SELECT * FROM ( SELECT * FROM table ORDER BY time DESC ) AS t เมื่อเรียกใช้ตัวอย่างนี้บน PostgreSQL อย่างน้อยคุณจะได้รับแผนการดำเนินการเดียวกันสำหรับทั้งแบบสอบถามภายในและตัวอย่างตารางที่ได้รับนี้รวมถึงชุดผลลัพธ์เดียวกัน ดังนั้นฉันจะสมมติว่าผู้วางแผนจะยกเลิกการสืบค้นนอกสุดเพียงเพราะซ้ำซ้อนหรือเพียงแค่ส่งผ่านผลลัพธ์จากตารางด้านใน ไม่มีใครคิดว่านี่อาจเป็นกรณีหรือไม่