如何查看 django 对象查询速度



我想在具有不同函数的 django 模型中测试不同的文本搜索方式。有没有办法在控制台或模板中打印查询数据库需要多长时间?提前致谢 (可能不是必需的,但仍然:这些是我想测试速度的 3 个函数。

def first_results(request):
if request.method == 'POST':
query = request.POST.get('query')
results = Page.objects.search(query)
return render(request, 'results.html', {'results': results})
else:
return render(request, 'home.html')

def second_results(request):
if request.method == 'POST':
query = request.POST.get('query')
results = Page.objects.annotate(search=SearchVector('title', 'content')).filter(
search=query
)
return render(request, 'results.html', {'results': results})
else:
return render(request, 'home.html')

def third_results(request):
if request.method == 'POST':
query = request.POST.get('query')
results = Page.objects.filter(
Q(title__contains=query) | Q(content__contains=query)
)
return render(request, 'results.html', {'results': results})
else:
return render(request, 'home.html')

如果你想要更好的查询分析,我建议你使用 Django 调试工具栏,

如果你想要一些简单的东西,在你的控制台中使用 Django DB 日志记录。请遵循本指南。

使用 Django 调试工具栏;它以详细的方式显示 SQL 语句、执行时间(以及更多(:

https://django-debug-toolbar.readthedocs.io/en/latest/index.html

您可以将所有查询记录到控制台,然后比较它们的速度。要启用日志记录,您需要在settings.py中执行此操作:

LOGGING = {
'version': 1,
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
}
},
'loggers': {
'django.db.backends': {
'level': 'DEBUG',
'handlers': ['console'],
}
}
}

最新更新