在Django中优化数据库查询

在Django中优化数据库查询,django,Django,我有一些代码导致我的页面加载速度非常慢(128毫秒内有49个查询)。这是我网站的登录页,所以需要快速加载 以下是my views.py,它在站点上创建最新更新的提要,并导致从调试工具栏中看到的加载时间最慢: def product_feed(request): """ Return all site activity from friends, etc. """ latestparts = Part.objects.all().prefetch_related('uniparts

我有一些代码导致我的页面加载速度非常慢(128毫秒内有49个查询)。这是我网站的登录页,所以需要快速加载

以下是my views.py,它在站点上创建最新更新的提要,并导致从调试工具栏中看到的加载时间最慢:

def product_feed(request):
    """ Return all site activity from friends, etc. """
    latestparts = Part.objects.all().prefetch_related('uniparts').order_by('-added')
    latestdesigns = Design.objects.all().order_by('-added')
    latest = list(latestparts) + list(latestdesigns)
    latestupdates = sorted (latest, key = lambda x: x.added, reverse = True)
    latestupdates = latestupdates [0:8]
    # only get the unique avatars that we need to put on the page so we're not pinging for images for each update
    uniqueusers = User.objects.filter(id__in = Part.objects.values_list('adder', flat=True))
    return render_to_response("homepage.html", {
    "uniqueusers": uniqueusers,
    "latestupdates": latestupdates
    }, context_instance=RequestContext(request))
导致时间最长的查询似乎是:

  latest = list(latestparts) + list(latestdesigns) (25ms)
还有一个是17ms(站点范围的公告)和25ms(在每个产品提要项上添加标记项),我也在调查


有人看到我可以优化活动提要加载的方法了吗?

您需要的项目不会超过8项,因此请限制您的查询。别忘了确保在两款车型中都添加了


对于奖励分数,请删除魔法数字。

您永远不需要超过8项,因此请限制您的查询。别忘了确保在两款车型中都添加了


对于奖励分数,请消除幻数。

在加快查询速度后,您可能希望签出以存储最常见的查询结果。

在加快查询速度后,您可能希望签出以存储最常见的查询结果。

此外,我相信
adder
ForeignKey
User
的模型

Part.objects.distinct().values_list('adder', flat=True)
上面的行是
QuerySet
,具有唯一的
addre
值。我相信你正是这么想的


它节省了您执行子查询的时间。

此外,我相信
加法器是
外键
用户
模型

Part.objects.distinct().values_list('adder', flat=True)
上面的行是
QuerySet
,具有唯一的
addre
值。我相信你正是这么想的


这就省去了你的提问。

对不起,这里没有问题。“限制你的查询”是什么意思。你说的“神奇数字”是什么意思?我现在要研究索引以及它的确切含义。哦,我明白了你所说的第一个是什么意思。对不起,这里没有。“限制你的查询”是什么意思。你说的“神奇数字”是什么意思?我现在要研究索引以及它的确切含义。Oops理解了第一个索引的含义。