ทีมต้องออกแบบ API ให้ตรวจสิทธิ์ทุกคำขอที่ฝั่งเซิร์ฟเวอร์ จึงพิจารณาว่า เว็บแอปพลิเคชันมีปัญหา N+1 Query Problem เมื่อแสดงรายการผู้ใช้พร้อมโพสต์ของแต่ละคน โดยเรียก Query ดึงผู้ใช้ 1 ครั้ง แล้วเรียก Query ดึงโพสต์ทีละคนสำหรับผู้ใช้แต่ละราย วิธีแก้ปัญหาที่ถูกต้องและมีประสิทธิภาพที่สุดคืออะไร
เฉลยอธิบาย
N+1 Query Problem เกิดจากการเรียก Query 1 ครั้งเพื่อดึงรายชื่อผู้ใช้ N คน แล้วเรียก Query อีก N ครั้งเพื่อดึงโพสต์ของแต่ละคน รวมทั้งหมด N+1 ครั้ง วิธีแก้ที่ถูกต้องคือใช้ Eager Loading ด้วยการ JOIN ตาราง Users และ Posts ในคำสั่ง SQL เดียวกัน ทำให้ดึงข้อมูลทั้งหมดได้ใน 1 Query เท่านั้น ส่วนตัวเลือก B การเพิ่ม Index ช่วยเพิ่มความเร็วแต่ไม่ได้ลดจำนวน Query ตัวเลือก C การใช้ Pagination ลดข้อมูลต่อหน้าแต่ยังคงมีปัญหา N+1 อยู่ และตัวเลือก D การใช้ Cache ช่วยลดการเชื่อมต่อซ้ำแต่ไม่ได้แก้ต้นเหตุของปัญหา ฐานความปลอดภัยปัจจุบัน: OWASP Top 10:2025 ครอบคลุม Broken Access Control, Security Misconfiguration, Supply Chain, Cryptographic Failures, Injection, Insecure Design, Authentication, Integrity, Logging และ Exceptional Conditions — https://owasp.org/Top10/