2.1 ปราบ N+1 Query และการใช้ Eager Loading อย่างถูกวิธี

วิดีโอบทเรียนความยาว 35 นาที (1080p HD Streaming)

บทที่ 2: Eloquent Performance & Database Indexing

2.1 ปราบ N+1 Query และการใช้ Eager Loading อย่างถูกวิธี

เทคนิคการใช้ with(), withCount(), และ whereHas() เพื่อลดเวลา Response Time จาก 1.2 วินาที เหลือเพียง 45 มิลลิวินาที

code_snippet.php
// Before (ช้ามาก: เกิด N+1 Queries)
$softwares = Software::all();
foreach ($softwares as $item) {
    echo $item->category->name;
}

// After (โหลดเร็วขึ้น 20 เท่า)
$softwares = Software::with(['category', 'currentVersion'])
    ->where('is_published', true)
    ->select(['id', 'category_id', 'title', 'price', 'slug'])
    ->paginate(12);
Language: PHP กดปุ่มคัดลอกเพื่อนำโค้ดไปวางใน IDE ของคุณได้ทันที

แบบทดสอบท้ายบทเรียน & เก็บคะแนน (Quiz Score)

ตอบถูกรับข้อละ 10 คะแนน บันทึกเข้า Profile อัตโนมัติ

คะแนนสอบสะสม: 0 แต้ม
ข้อ 1 ฟังก์ชันใดใน Laravel Eloquent ใช้สำหรับแก้ปัญหา N+1 Query โดยการทำ Eager Loading ความสัมพันธ์ล่วงหน้า?
+10 แต้ม
ข้อ 2 หากต้องการนับจำนวนความสัมพันธ์ เช่น จำนวนดาวน์โหลด โดยไม่ต้องการดึงข้อมูลทั้งหมด ควรใช้เมธอดใด?
+10 แต้ม

ชุมชนถาม-ตอบประจำบทเรียน (1)

เข้าสู่ระบบเพื่อร่วมตั้งคำถาม

กรุณาเข้าสู่ระบบ หรือสมัครสมาชิกก่อนเพื่อโพสต์คำถามในบทเรียนนี้

avatar เอกชัย สถิตวงศ์ (VIP Developer) 1 week ago

บทนี้เข้าใจง่ายมากครับ ลองเอาไปแก้ระบบโรงเรียนจากเดิมโหลดหน้าแรก 2 วินาที ตอนนี้เหลือไม่ถึง 80ms แล้วครับ!

สารบัญบทเรียนทั้งหมด

ความคืบหน้า 0%
เรียนจบแล้ว 0 / 3 บทเรียน ยังไม่เริ่ม
เรียนอีก 3 บท เพื่อปลดล็อคใบประกาศนียบัตร

บทที่ 3: Caching, Queue และ Background Jobs