Django中的查询优化

Posted

技术标签:

【中文标题】Django中的查询优化【英文标题】:Query optimization in Django 【发布时间】:2015-07-13 02:00:46 【问题描述】:

您好,我有一个类似这样的数据库查询

qset = Database_View.objects.filter(xx__name__icontains=tata)
qset = qset.filter(xx__name__icontains=dada)
qset = qset.filter(xx__name__icontains=papa)

我怎样才能把它变成一个单一的查询?

【问题讨论】:

Database_View.objects.filter(xx__name__icontains=tata).filter(xx__name__icontains=dada).filter(xx__name__icontains=papa) 查询集是惰性的。它已经是一个查询。 @MarkGalloway 是对的。在您使用之前,您的查询集不会被评估。 如果您正在寻找一个单一的班轮,只需将所有内容放在一个filter 子句下,以, 分隔 【参考方案1】:

这已经是一个查询,因为 django 为我们提供了在查询集中延迟加载的功能。因此,在您的数据库中,只有一个选择查询来获取结果。你可以阅读更多关于django的延迟加载here

【讨论】:

请不要只在此处发布链接。提供充分的答案

以上是关于Django中的查询优化的主要内容,如果未能解决你的问题,请参考以下文章

优化 Django 查询

Django Rest Framework,数据库查询优化

Django Admin Cookbook-8如何在Django admin中优化查询

Django进阶之查询优化extra注入SQL及批量创建

优化 django 数据库查询

从多个模型中获取信息时优化 django 查询