我有一个 postgresql 查询,当在运行的数据库中完成时,它会{integer, boolean, integer, varchar(255), varchar(255), bigint, text}
在大约70 毫秒psql
内返回 120 行。
在同一台机器上使用 python/djangodjango.db.connection.cursor.execute()
需要10 秒才能运行。
我尝试将所有行放入一个数组和一个字符串(18k 个字符,但只返回前 500 个字符需要相同的时间),所以只返回一行但没有增益。
关于为什么在 python 和 db 中运行查询会出现如此显着的减速的任何想法?
编辑
我不得不增加 work_mem 以使函数在 psql 中及时运行。其他函数/查询不显示相同的模式,psql 和 python 之间的差异只有几毫秒。
编辑
将 work_mem 减少到 1MB 在 psql 和 django shell 中显示相似的数字。难道是django没有按照work_mem中设置的内存?
编辑
啊。问题是psql中设置的work_mem全局无效,如果我在函数中设置内存,调用是及时的。我想在配置文件中设置它可以全局工作。