gpt4 book ai didi

mysql - Rails 3.1 - Heroku 上 mySQL 和 PostgreSQL 之间巨大的查询时间差异

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

我的开发环境中有一个查询,通常需要 1.7 毫秒 才能在开发 mySQL 数据库上运行。当升级到 Heroku 和 PostgreSQL 时,对相同数据集的相同查询大约需要 1.2 秒!

SELECT distinct user_id, score, quality 
FROM `reports`
WHERE (datetime_utc >= '2012-01-13 14:00:00' AND
datetime_utc <= '2012-01-14 14:00:00')
ORDER BY score DESC, quality DESC LIMIT 20

我创建了一个关于分数和质量的复合索引,这对 SQL 版本有帮助,但在 PostgreSQL 上运行的查询仍然非常非常慢。我的第一直觉是检查索引是否确实在 Heroku 端,但我不太确定该怎么做——无论如何,我觉得这更多是因为 mySQL 和 PostgreSQL 不支持以完全相同的方式做事。

任何见解或指示将不胜感激!

最佳答案

试试这个修改后的查询:

SELECT user_id, score, quality
FROM reports
WHERE datetime_utc BETWEEN '2012-01-13 14:00:00' AND '2012-01-14 14:00:00'
GROUP BY user_id, score, quality
ORDER BY score DESC, quality DESC
LIMIT 20
  • 由于 DISTINCT 最后应用,因此它可能比具有许多非不同行的 GROUP BY 慢。你必须测试 - 使用 EXPLAIN ANALYZE .否则,结果是一样的。

  • 使用 BETWEEN 对 WHERE 子句进行了较小的简化。删除了非标准的 MySQL 语法。

  • (score, quality) 上的索引几乎不会被使用。这里的有用索引是(在大多数情况下应该有很大的不同):

CREATE INDEX reports_date_time_utc_idx ON reports (date_time_utc)

重要的部分是索引。

关于mysql - Rails 3.1 - Heroku 上 mySQL 和 PostgreSQL 之间巨大的查询时间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8796554/

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