sql - Postgres 查询在生产环境中速度较慢,但​​在临时环境和本地环境中都较快

标签 sql postgresql heroku

我对这个一无所知。我有一个相当大的查询,如下所示:

SELECT *
FROM some_table
WHERE some_id IN (hundreds, perhaps even thousands of ids)

出于某种原因,虽然此查询对于大多数用户来说运行得相当快,但我们有一两个帐户运行速度太慢,以至于遇到超时错误 (Heroku)。我认为它一定与这些用户的特定数据有关,但是,当我将生产数据库的副本放在临时服务器上时,这些相同的查询运行得很快(< 2 秒)。我也在本地机器上测试了数据,效果是一样的:快。

所有三个环境都运行 Postgres 11。我一辈子都无法弄清楚是什么原因造成的。

有什么想法吗?

最佳答案

如果您的查询结果是“数百个,甚至数千个 id”,那么您可以避免使用 in 子句并使用内部联接

SELECT *
FROM some_table
INNER JOIN  (
  select id from my_table /* for hundreds, perhaps even thousands of ids */
) t on t.id = some_table.some_id 

并确保表 some_table 列 some_id 上有正确的索引

关于sql - Postgres 查询在生产环境中速度较慢,但​​在临时环境和本地环境中都较快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56497387/

相关文章:

java - Elasticsearch 查询在同一查询中使用 And & Or - Bool 查询?

mysql - 如果sql查询中的记录相同,如何分配相同的唯一行号?

sql - 选择行单元格作为新列

django - git push Heroku main - 错误 : src refspec main does not match any

ruby-on-rails - rails 3 : how to detect if the application is running in server mode for multiple different environment?

python - 无法从在 heroku 上运行的 flask 应用程序连接到 cleardb

sql - Derby,SQL:为什么这些语句返回不同的结果集?

PHP zend left join 转换查询中的日期

sql - TRUNCATE 是 DML 语句吗?

sql - 为什么Json转入db?