我试图了解.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/