TGViewer
PyCoders (پایتون) PyCoders (پایتون) @python_rd · 4.1K subscribers
Post #2086 642
🔆بهینه‌سازی کوئری در جنگو

یکی از بزرگ‌ترین دلایل کند شدن پروژه‌های جنگویی، اجرای کوئری‌های تکراری روی دیتابیسه که بهش چالش N+1 می‌گن. فرض کن می‌خوای لیست کتاب‌ها و نام نویسنده هر کتاب رو نمایش بدی. اگر کد رو این‌طوری بنویسی، جنگو برای هر کتاب یه کوئری جداگانه به جدول نویسنده‌ها می‌زنه:
books = Book.objects.all()
for book in books:
print(book.author.name) # اجرای یک کوئری اضافه به ازای هر کتاب!

برای حل این مشکل کافیه از select_related استفاده کنی تا جنگو با یک Joint ساده در دیتابیس، همه اطلاعات رو یک‌جا بکشه بیرون و سرعت لود صفحه رو چند برابر کنه:
books = Book.objects.select_related('author').all()
for book in books:
print(book.author.name) # بدون کوئری اضافه

همیشه قبل از دیپلوی کردن پروژه، تعداد کوئری‌هاتون رو با Django Debug Toolbar چک کنید تا سرور زیر بار نره.

🐍 @python_rd
  • 👍 2
More from @python_rd
  1. Oct 16, 2026🔆 یک سایت خوب پر از پادکست‌های مرتبط با زبان پایتون 🔹 talkpython.fm 🐍 @python_rd
  2. Oct 15, 2026🌐 خروجی این کد پایتون چیست؟ x = [1, 2, 3] y = x x += [4, 5] print(x) print(y) 🔹 گزینه‌ها…
  3. Oct 15, 2026🔆 آیا enumerate() بهتر از index-based loop است؟ 🔹 خیلی‌ها هنوز این شکلی می‌نویسند: items…
  4. Oct 15, 2026🔆 یک تله عجیب در پایتون: bool در واقع زیرکلاس int است 🔹 خیلی‌ها می‌دانند True == 1 و Fal…
  5. Oct 13, 2026کوییز پایتون 🔆 خروجی اجرای کد زیر چیست؟ t = (1, 2, [3, 4]) try: t[2] += [5] except TypeEr…
  6. Oct 13, 2026🔆 راز مکانیزم پیاده‌سازی و تغییر جهت NaN در الگوریتم مرتب‌سازی پایتون (Timsort) 🔹 باگ ری…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →