ระหว่างการ review code ของระบบงาน
สิ่งที่พบเจอบ่อยมาก ๆ คือ N+1 problem
ฟังแล้วอาจจะงง ๆ ว่าคืออะไร
มาดูตัวอย่างกัน

การดึงข้อมูลจาก database/service

เมื่อต้องการข้อมูล product ว่ามี product ใหม่วันนี้มีอะไรบ้าง
นั่นคือจะทำการดึงข้อมูล product 1 ครั้งมาจำนวน N product
แต่สิ่งที่ product แต่ละตัวต้องการอีกคือ promotion และ stock
ทำให้ต้องไปดึงข้อมูลของมาเพิ่มในแต่ละ product
ถ้าเขียน code ง่าย ๆ จะทำแบบนี้

น่าแปลกว่า จะเจอปัญหาแบบนี้เยอะมาก ๆ
ที่สำคัญมักจะส่งผลต่อระบบงานในเชิงลบอย่างมาก
และชอบแก้ไขด้วยการเพิ่ม CPU/MEMORY ของระบบอีกต่างหาก !!
ทำไมนะ ?