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

官方文档here对此进行了说明。

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


给出以下输出。


  在博客上进行Seq扫描(费用= 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

最佳答案

explain()直译为原始SQL EXPLAIN,该SQL特定于我们正在使用的数据库。

在官方文档中,他们使用了Postgres,就像我使用MySQL DB一样。

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

关于python - 为什么Django ORM describe()函数未提供预期的输出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56867142/

10-12 16:54
查看更多