Django ORM性能优化清单
ORM易写但易慢,关键在查询数与返回量。首先使用select_related优化一对一/外键,prefetch_related优化一对多/多对多;其次只取所需字段values/only/defer降低IO;再次用exists判断存在性,不要count全表;聚合统计使用annotate避免Python层循环。必要时加索引并关注迁移顺序。示例:
qs = (Book.objects
.select_related("publisher")
.prefetch_related("authors")
.only("id","title","publisher__name"))
评论 0