🔹 بزرگترین اشتباه توی جنگو، کوئری زدن داخل حلقهست. تصور کن ۱۰۰ تا پست داری و میخوای اسم نویسنده هرکدوم رو چاپ کنی. اگه بنویسی
posts = Post.objects.all() و بعد توی حلقه صداش بزنی، جنگو برای هر پست یه کوئری جداگانه به دیتابیس میفرسته! این یعنی ۱۰۰ تا کوئری اضافه و مرگِ سرعت سایت. راه حلش select_related هست که همه رو توی یک کوئریِ "JOIN" میاره. اینطوری مثال بزنیم:# کد بد (تعداد زیادی کوئری به دیتابیس)
posts = Post.objects.all()
for post in posts:
print(post.author.name)
# کد بهینه (فقط ۱ کوئری به دیتابیس)
posts = Post.objects.select_related('author').all()
for post in posts:
print(post.author.name)
🔹همین تغییر کوچک، تعداد کوئریها رو از ۱۰۰ تا به فقط ۱ دونه کاهش میده و سرعت لود صفحه رو توی جنگو به کل تغییر میده.
🐍 @python_rd