Python 函数调用与数据库查询 (django ORM) 开销

Python function call vs database query (django ORM) overhead

在 Django 项目中工作时,当我发现如果我使用函数调用(例如 datetime.today())我可以减少某些情况下的数据库查询时,我选择这样做是为了获得更高的效率。据我所知,数据库查询是生产环境中最昂贵的操作。

我说得对吗?想想一个拥有数十万条记录的 postgres 数据库,我使用 datetime.today() 函数并检查是否是今天,如果不是则不 运行 数据库查询( 过滤器存在( ) 查询)。 一直进行数据库查询也符合我的逻辑目的,但我添加 datetime 函数调用只是为了提高效率,因为只在今天进行查询就足以满足这种情况。这段代码在一个循环中。

这种方法会比一直简单地查询数据库更有效吗?

一般来说,数据库查询会比 python 函数或 django 函数更快,因为与 python 相比,数据库的级别非常低。

部分原因是 python 有许多不同的抽象,系统必须通过它们来执行功能,而数据库通常都是用低级语言创建的(postgresql 是用 C 创建的)它通常被称为仍然可用于编程的最低级语言。

另外 python 不编译而是解释,这意味着它永远不会转换为更快的汇编代码,而是由虚拟机解释的字节码,而数据库是用 c 编译成直接运行的程序集CPU

如果您想节省时间并进行优化,我建议您查看 caching framework 就好像您是 运行 此查询一样,每天一次,您可以将其添加到缓存中,有效期为有一天,检查一下

编辑:

检查 benchmark django ORM can manage about 2073.64 Get transactions a minute roughly 1 every 30 milliseconds whereas datetime benchmarks 显示它可以在 0.01 毫秒内解析,所以在这种情况下它可能 datetime.today