首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django查询相对于原始SQL缓慢

问Django查询相对于原始SQL缓慢
EN

Stack Overflow用户
提问于 2018-05-22 14:52:46
回答 1查看 870关注 0票数 5

我使用matches.query.__format__('')打印Django查询将执行的原始SQL。

如果我在psql中直接执行该查询,则需要5-10‘s,而以下所述的Django查询在第一次执行时可以占用100’s。

丢失100 is非常多(必须运行第二个查询--即2x100 is-加上延迟,用户很容易注意到)。这是正常的吗?我是不是遗漏了什么?

代码语言:javascript
复制
def api(request):
    tag = request.GET.get('q', '')
    matches = Relationship.objects.filter(keyword=tag, count__gte=3).order_by('-count')[:30]

    print(matches.query.__format__('')) # get raw SQL query here

    start_time = time.time()
    print(matches) # lazy query executed here
    print("Time elapsed {0:0.1f}ms".format((time.time() - start_time) * 1000))

    mydict = serialize_matches(matches, tag)
    return JsonResponse(mydict)

更新:

谢谢你以下的提示。Django看起来很好,毕竟是数据库速度慢。我的一些psql查询非常快,因为结果已经被缓存。即使在重新启动psql时,似乎也存在一些缓存,这可能会混淆性能测试。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-03 09:23:30

我发现Django很好,我的数据库很慢。有些psql查询之所以快速,只是因为结果缓存了。注意,即使在重新启动psql时,似乎也存在一些缓存。

因此,在测试数据库的性能时,请确保查询没有缓存。

没有必要在最后使用原始SQL查询,因为Django ORM在性能上似乎还不错。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50470696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档