Python 终端中Django查询和原始sql查询的执行时间差
我有一个Django查询,它运行得很好,但我发现执行速度比我在终端中进行相同的查询慢。出于好奇,我在terminal中运行了django查询(我从django调试工具栏中读取了它),得到了相同的慢速查询。我试图找出问题所在,我怀疑是Python 终端中Django查询和原始sql查询的执行时间差,python,django,postgresql,django-queryset,django-orm,Python,Django,Postgresql,Django Queryset,Django Orm,我有一个Django查询,它运行得很好,但我发现执行速度比我在终端中进行相同的查询慢。出于好奇,我在terminal中运行了django查询(我从django调试工具栏中读取了它),得到了相同的慢速查询。我试图找出问题所在,我怀疑是::timestamp转换引起的 我试图在下面提出我的问题: 我的django查询: query=Table.filter(time_stamp__range=('2017-05-28 01:00:00', '2017-05-28 07:00:00')).va
::timestamp
转换引起的
我试图在下面提出我的问题:
我的django查询:
query=Table.filter(time_stamp__range=('2017-05-28 01:00:00', '2017-05-28 07:00:00')).values('time_stamp', 'value')
class Table(models.Model):
time_stamp = models.DateTimeField()
value = models.FloatField(blank=True, null=True)
根据Django调试工具栏,它等于此原始sql语句:
SELECT * FROM "table" WHERE "table"."time_stamp" BETWEEN '2018-05-28T01:00:00.004325'::timestamp AND '2018-05-28T07:00:00.004325'::timestamp
根据调试工具栏的结果,我得到了1436,11ms的运行时间
之后,我通过终端登录我的PostgreSQl数据库,并使用以下查询:
select * from table where time_stamp between '2018-05-28 01:00:00' and '2018-05-28 07:00:00';
这里我得到了执行时间753.086 ms
我的模型示例:
query=Table.filter(time_stamp__range=('2017-05-28 01:00:00', '2017-05-28 07:00:00')).values('time_stamp', 'value')
class Table(models.Model):
time_stamp = models.DateTimeField()
value = models.FloatField(blank=True, null=True)
在我看来,除了Django查询中的timestamp(::timestamp
)会话之外,这两个查询是相同的
我如何避免Django查询中的时间戳对话,我认为这是一个缓慢的查询?谢谢你的帮助使用django的ORM(将记录转换为对象)会带来开销。它(几乎?)总是比原始SQL慢 如果您只需要数据而不需要
表的实例
模型,则可以