在Django中直接从查询集运行"EXPLAIN"似乎很容易,但是我没有看到任何明显的操作方法,而且在文档中搜索"EXPLAIN"是一件困难的事情.
在Django中直接从查询集运行"EXPLAIN"似乎很容易,但是我没有看到任何明显的操作方法,而且在文档中搜索"EXPLAIN"是一件困难的事情.
好吧,除了一个工具栏,似乎什么都没有,所以我写了自己的mixin,在我的查询集上给我一个explain()
方法:
from django.db import connections
from django.db.models.query import QuerySet
class QuerySetExplainMixin:
def explain(self):
cursor = connections[self.db].cursor()
cursor.execute('explain %s' % str(self.query))
return cursor.fetchall()
QuerySet.__bases__ += (QuerySetExplainMixin,)
希望这对其他人有用.