optimization database operations

  • Understand cached attributes
>>> entry = Entry.objects.get(id=1)
>>> entry.blog   # Blog object is retrieved at this point
>>> entry.blog   # cached version, no DB access
>>> entry = Entry.objects.get(id=1)
>>> entry.authors.all()   # query performed
>>> entry.authors.all()   # query performed again
  • Do database work in the database rather than in Python
  • Retrieve everything at once if you know you will need it
    • Use QuerySet.select_related() and prefetch_related()
  • Don’t retrieve things you don’t need
    • Use QuerySet.values() and values_list()
    • Use QuerySet.defer() and only()
    • Use QuerySet.count() rather than len(query_set)
      • if there is cache use count() equals Len()
    • Use QuerySet.exists() rather than if query_set
      • if there is cache user exists() equals if query_set
  • Use QuerySet.update() and delete() rather than get query set then save
  • Insert in bulk
  • use create
  • Don’t order results if you don’t care
  • Use foreign key values directly
    • use entry.blog_id rather than entry.blog.id
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容