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

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

Django ORM自带的defer和only方法虽说不像filter, exclude, order_by这几个方法那么常见,但用起来还是可以优化数据库查询的。今天小编我就带你看看如何使用这两种方法。

Defer方法

Defer方法的用途是查询数据库时跳过指定的字段,比如下面查询时将跳过每篇Entry的headline和body字段。当你不需要在查询结果中使用headline和body字段时,使用defer方法可以防止将headline和body载入内存,从而节省空间。一篇文章可能没啥关系,但文章很多时,节省的内存空间不可忽视。

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方法是指定需要载入的字段。比如下面查询将只会载入body和pub_date。

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

使用only方法时一定要非常注意它的顺序,它的执行以最后一个为准。下例将只会载入headline。

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

only方法与defer方法可以联用,但一定要注意先后顺序。下例只会载入headline。

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

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

你可能感兴趣的文章
Mysql中索引的最左前缀原则图文剖析(全)
查看>>
MySql中给视图添加注释怎么添加_默认不支持_可以这样取巧---MySql工作笔记002
查看>>
Mysql中获取所有表名以及表名带时间字符串使用BetweenAnd筛选区间范围
查看>>
Mysql中视图的使用以及常见运算符的使用示例和优先级
查看>>
Mysql中触发器的使用示例
查看>>
Mysql中设置只允许指定ip能连接访问(可视化工具的方式)
查看>>
mysql中还有窗口函数?这是什么东西?
查看>>
mysql中间件
查看>>
MYSQL中频繁的乱码问题终极解决
查看>>
MySQL为Null会导致5个问题,个个致命!
查看>>
MySQL为什么不建议使用delete删除数据?
查看>>
MySQL主从、环境搭建、主从配制
查看>>
Mysql主从不同步
查看>>
mysql主从同步及清除信息
查看>>
MySQL主从同步相关-主从多久的延迟?
查看>>
mysql主从同步配置方法和原理
查看>>
mysql主从复制 master和slave配置的参数大全
查看>>
MySQL主从复制几个重要的启动选项
查看>>
MySQL主从复制及排错
查看>>
mysql主从复制及故障修复
查看>>