📝
> Django ORM 查询优化技巧
总结 Django ORM 中的查询优化方法,提高应用性能。
# 优化前:会产生 N+1 查询
for post in BlogPost.objects.all():
print(post.author.name) # 每次都查询数据库
# 优化后:一次查询获取所有相关数据
for post in BlogPost.objects.select_related('author'):
print(post.author.name) # 不会产生额外查询
# 优化前
for post in BlogPost.objects.all():
for tag in post.tags.all(): # N+1 查询
print(tag.name)
# 优化后
for post in BlogPost.objects.prefetch_related('tags'):
for tag in post.tags.all(): # 只需要两次查询
print(tag.name)
# 只获取需要的字段
BlogPost.objects.only('title', 'created_at')
# 排除不需要的字段
BlogPost.objects.defer('content')