在企业级Django应用开发中,数据库性能优化是保障系统稳定运行的关键环节。本文将分享几个实用的优化方案。
1. 使用select_related和prefetch_related减少N+1查询
# 优化前
for post in Post.objects.all():
print(post.author.name) # 每次都触发数据库查询
# 优化后
for post in Post.objects.select_related('author').all():
print(post.author.name)
2. 数据库索引优化
# 在模型中添加索引
class User(models.Model):
email = models.CharField(max_length=100, db_index=True)
created_at = models.DateTimeField(db_index=True)
class Meta:
indexes = [
models.Index(fields=['email', 'created_at'])
]
3. 使用数据库连接池 配置settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'OPTIONS': {
'MAX_CONNS': 20,
}
}
}
这些优化方案在实际项目中可将查询性能提升5-10倍,建议在开发初期就考虑数据库设计。

讨论