Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 终端中Django查询和原始sql查询的执行时间差_Python_Django_Postgresql_Django Queryset_Django Orm - Fatal编程技术网

Python 终端中Django查询和原始sql查询的执行时间差

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

我有一个Django查询,它运行得很好,但我发现执行速度比我在终端中进行相同的查询慢。出于好奇,我在terminal中运行了django查询(我从django调试工具栏中读取了它),得到了相同的慢速查询。我试图找出问题所在,我怀疑是
::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慢

如果您只需要数据而不需要
表的实例
模型,则可以