在Django中轻松比较MySQL计划
例如,有没有一种方法可以从这行代码中打印出查询在Django中轻松比较MySQL计划,django,sql-execution-plan,Django,Sql Execution Plan,例如,有没有一种方法可以从这行代码中打印出查询 Model.objects.all().order_by(sort_headers.get_order_by()) 我想计划使用Django的最佳方式,但我的模型中的对象超过100万,速度太慢了。想到两个选项: 您可以按以下方式查看原始SQL查询: 请参见: 确保您的Django调试设置 设置为True。那么,就这样做: >>> from django.db import connection >>> conn
Model.objects.all().order_by(sort_headers.get_order_by())
我想计划使用Django的最佳方式,但我的模型中的对象超过100万,速度太慢了。想到两个选项:
>>> from django.db import connection
>>> connection.queries
[{'sql': 'SELECT polls_polls.id,polls_polls.question,polls_polls.pub_date FROM polls_polls', 'time': '0.002'}]
debugsqlshell
作为
这个
包裹这将输出底层的
每个ORM调用结果的SQL
例如,在数据库查询中:
>>> from page.models import Page
>>> ### Lookup and use resulting in an extra query...
>>> p = Page.objects.get(pk=1)
SELECT "page_page"."id",
"page_page"."number",
"page_page"."template_id",
"page_page"."description" FROM "page_page" WHERE
"page_page"."id" = 1
每个查询集都有一个对查询对象的
.query
引用。打印此对象将为您提供已执行的查询
>>> f = Model.objects.all().order_by(sort_headers.get_order_by())
>>> print(f.query)
>>> query = str(f.query) # if you want to save it