我试图了解.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
答案 0 :(得分:0)
explain()
从字面上转换为原始SQL EXPLAIN
,该SQL特定于我们正在使用的数据库。
在官方文档中,他们在我使用MySQL DB的地方使用了Postgres。
我得到了特定于MySQL的输出,它与EXPLAIN SELECT * FROM TABLE_NAME
相同。