ทีมต้องออกแบบ API ให้ตรวจสิทธิ์ทุกคำขอที่ฝั่งเซิร์ฟเวอร์ จึงพิจารณาว่า เว็บแอปพลิเคชันมีปัญหา N+1 Query Problem เมื่อแสดงรายการผู้ใช้พร้อมโพสต์ของแต่ละคน โดยเรียก Query ดึงผู้ใช้ 1 ครั้ง แล้วเรียก Query ดึงโพสต์ทีละคนสำหรับผู้ใช้แต่ละราย วิธีแก้ปัญหาที่ถูกต้องและมีประสิทธิภาพที่สุดคืออะไร

ใช้ Cache เก็บผลลัพธ์ของ Query ดึงโพสต์ทีละคนไว้ใน Memory เพื่อลดภาระการเชื่อมต่อฐานข้อมูลซ้ำ
เพิ่ม Index บนตาราง Posts เพื่อให้การค้นหาโพสต์ของแต่ละผู้ใช้เร็วขึ้น แต่ยังคงเรียก Query แยกสำหรับแต่ละคน
ใช้ Pagination แบ่งข้อมูลผู้ใช้ออกเป็นหน้าละ 10 คน เพื่อลดจำนวน Query ที่เรียกในแต่ละครั้งให้น้อยลง
ใช้ Eager Loading โดย JOIN ตาราง Users และ Posts ใน 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/

ข้อสอบอื่นในวิชาความรู้เกี่ยวกับการพัฒนาโปรแกรมระบบงานในลักษณะ Web Application

ดูข้อสอบวิชานี้ทั้งหมด →