博客
关于我
Django的defer和only方法详解
阅读量:229 次
发布时间:2019-02-28

本文共 788 字,大约阅读时间需要 2 分钟。

Django ORM:defer和only方法优化数据库查询

Django ORM为开发者提供了多种工具来优化数据库查询,而defer和only方法虽然不如filter、exclude、order_by等方法常见,但在特定场景下能显著提升效率。本文将详细介绍这两种方法的使用方法及其优势。

defer方法

defer方法的作用是跳过指定字段的查询,从而减少数据库返回的数据量。当你不需要查询的字段在结果中呈现时,使用defer方法可以避免将这些字段加载到内存中,进而节省内存资源。

示例

Entry.objects.defer("headline", "body")

注意事项

  • defer方法可以与filter、exclude等方法结合使用,顺序无关:

    Entry.objects.defer("body").filter(rating=5).defer("headline")
  • 当需要加载所有字段时,可以通过设置defer(None)来实现:

    my_queryset.defer(None)

only方法

only方法与defer方法的作用相似,但其目的却不同。only方法用于指定需要加载的字段,确保这些字段被包含在查询结果中。

示例

Entry.objects.only("body", "pub_date")

注意事项

  • only方法的字段顺序至关重要,最后一个字段决定了最终加载的字段:

    Entry.objects.only("body", "rating").only("headline")
  • only和defer方法可以结合使用,但需注意顺序:

    Entry.objects.only("headline", "body").defer("body")

通过合理使用defer和only方法,可以显著优化数据库查询,减少不必要的数据传输和内存占用,从而提升应用性能。

转载地址:http://sytp.baihongyu.com/

你可能感兴趣的文章
OS2ATC2017:阿里研究员林昊畅谈操作系统创新与挑战
查看>>
OSCACHE介绍
查看>>
SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
查看>>
OSChina 周五乱弹 ——吹牛扯淡的耽误你们学习进步了
查看>>
SQL--mysql索引
查看>>
OSChina 周四乱弹 ——程序员为啥要买苹果手机啊?
查看>>
OSChina 周日乱弹 —— 2014 年各种奇葩评论集合
查看>>
OSChina 技术周刊第十期,每周技术抢先看!
查看>>
oscp--python
查看>>
OSError: no library called “cairo-2“ was foundno library called “cairo“ was foundno library called
查看>>
OSError: [WinError 193] %1 不是有效的 Win32 应用程序。
查看>>
osgearth介绍
查看>>
OSGi与Maven、Eclipse PlugIn的区别
查看>>
Osgi环境配置
查看>>
OSG——选取和拖拽
查看>>
OSG中找到特定节点的方法(转)
查看>>
OSG学习:C#调用非托管C++方法——C++/CLI
查看>>
OSG学习:OSG中的智能指针
查看>>
OSG学习:OSG组成(一)——组成模块
查看>>
OSG学习:OSG组成(三)——组成模块(续):OSG核心库中的一些类和方法
查看>>