在 Django 中轻松比较 MySQL 计划
有没有办法打印出查询,例如从这行代码
Model.objects.all().order_by(sort_headers.get_order_by())
我想计划使用 Django 的最佳方式,但使用 >我的模型中有 100 万个对象,这太慢了。
is there a way to print out query for example from this line of code
Model.objects.all().order_by(sort_headers.get_order_by())
I want to plan best way of using Django but with > 1 million of objects in my model this is getting too slow.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我想到了两个选项:
您可以将原始 SQL 查询视为
在 Django 常见问题:
确保您的 Django DEBUG 设置
设置为 True。然后,只需执行以下操作:
<前><代码>>>>从 django.db 导入连接
>>>>>连接查询
[{'sql': '从 polls_polls 中选择 polls_polls.id,polls_polls.question,polls_polls.pub_date', '时间': '0.002'}]
您还可以查看
debugsqlshell
作为以下部分提供Django 调试工具栏
包裹。这输出底层
每个 ORM 调用结果的 SQL
在数据库查询中,例如:
<前><代码>>>>从 page.models 导入页面
>>>>> ### 查找和使用导致额外的查询...
>>>>> p = Page.objects.get(pk=1)
选择“page_page”。“id”,
"page_page"."编号",
"page_page"."template_id",
“page_page”。“描述”来自“page_page”,其中
"page_page"."id" = 1
Two options come to mind:
You can view the raw SQL queries as
described in the Django FAQ:
Make sure your Django DEBUG setting
is set to True. Then, just do this:
You could also look at the
debugsqlshell
supplied as part ofthe Django Debug Toolbar
package. This outputs the underlying
SQL for each ORM call that results
in a database query, for example:
每个查询集都有一个对查询对象的
.query
引用。打印该对象将为您提供执行的查询。Each queryset has a
.query
reference to the query object. Printing this object will give you the query executed.