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