Skip to content
เข้าสู่ระบบ

Queryset ขั้นกลาง

ปัญหา N+1 เป็นปัญหาที่พบบ่อยที่สุดใน Django ORM เกิดเมื่อเราดึงข้อมูลหลัก 1 query แล้ว loop ดึงข้อมูลที่เกี่ยวข้องอีก N queries

views.py
def post_list(request):
"""
ปัญหา N+1: 1 query สำหรับ posts + N queries สำหรับ author
ถ้ามี 100 posts = 101 queries!
"""
posts = Post.objects.all() # Query 1: SELECT * FROM posts
for post in posts:
# Query 2-101: SELECT * FROM users WHERE id = ?
print(post.author.username)
return render(request, 'posts.html', {'posts': posts})

เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม

ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด