为什么Django ORMexplain()函数没有给出预期的输出?

时间:2019-07-03 09:36:25

标签: python django python-3.x django-models django-orm

我试图了解.explain()函数在 Django ORM 中的工作方式。

官方文档here对此说。

print(Blog.objects.filter(title='My Blog').explain())

给出以下输出。

  

在博客上进行序列扫描(费用= 0.00..35.50行= 10宽度= 12)过滤器:(标题

     

='我的博客':: bpchar)

但是,如果我尝试在本地的 Django shell 中打印相同的内容,则会为我提供如下所示的不同输出。

print(OCUser.objects.all().explain())

给予

  

SIMPLE alyssa_ocuser无所有无无无无2853 100.0无

与官方文档中的内容不同。

我不确定这个 SIMPLE 是什么,以及所有这些 None 值。有人可以解释吗?

当我过滤查询时,我得到如下信息。

print(OCUser.objects.filter(chain_code=110).explain(format='text'))
  

1 SIMPLE alyssa_ocuser无所有无无无无2853 10.0使用   在哪里

我做错什么了吗?

Python: 3.7.3
Django: 2.1.5
Mysql: Ver 14.14 Distrib 5.7.26

1 个答案:

答案 0 :(得分:0)

explain()从字面上转换为原始SQL EXPLAIN,该SQL特定于我们正在使用的数据库。

在官方文档中,他们在我使用MySQL DB的地方使用了Postgres。

我得到了特定于MySQL的输出,它与EXPLAIN SELECT * FROM TABLE_NAME相同。