gpt4 book ai didi

python - 终端中Django查询和原始sql查询之间的执行时间差异

转载 作者:行者123 更新时间:2023-11-29 12:08:08 25 4
gpt4 key购买 nike

我有一个运行良好的 Django 查询,但我的执行速度比我在终端中进行同样的查询要慢。出于好奇,我在终端中运行了 django 查询(我已经从 Django Debug Tooltbar 中读取了它),但我得到了同样缓慢的查询。我试图找出问题所在,我怀疑是 ::timestamp 转换。

我尝试在下面提出我的问题:

我的 django 查询:

   query=Table.filter(time_stamp__range=('2017-05-28 01:00:00',  '2017-05-28 07:00:00')).values('time_stamp',  'value')

根据 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,11 毫秒 运行时间。

之后我通过终端登录到我的 PostgreSQl 数据库并使用了这个查询:

select * from table where time_stamp between '2018-05-28 01:00:00' and '2018-05-28 07:00:00';

这里我得到了 753.086 毫秒 执行时间。

我的模型示例:

class Table(models.Model):
time_stamp = models.DateTimeField()
value = models.FloatField(blank=True, null=True)

在我看来,除了 Django 查询中的时间戳 (::timestamp) 对话之外,这两个查询是相同的。

如何避免我认为导致查询缓慢的 Django 查询中的时间戳对话?提前感谢您的帮助!

最佳答案

使用 django 的 ORM 会产生开销,它将记录转换为对象。它(几乎?)总是比原始 SQL 慢。

如果您只需要数据而不需要Table 模型的实例,您可以query the database directly .

关于python - 终端中Django查询和原始sql查询之间的执行时间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50569835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com