我使用
如果我直接在
失去100毫秒很多(必须运行第二个查询 - 这是2 x 100毫秒 - 加上延迟,用户很容易注意到)。这是正常的吗?我有什么遗漏的吗?
matches.query.__format__('')
来打印Django查询将要执行的原始SQL语句。如果我直接在
psql
中执行该查询,它需要5-10毫秒,而下面计时的Django查询第一次执行可能需要高达100毫秒。失去100毫秒很多(必须运行第二个查询 - 这是2 x 100毫秒 - 加上延迟,用户很容易注意到)。这是正常的吗?我有什么遗漏的吗?
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
时也存在某些缓存,这可能会影响性能测试。