ruby-on-rails - 简单的 Postgres 查询在 Heroku 上运行缓慢

标签 ruby-on-rails postgresql activerecord heroku postgresql-performance

我有一个包含大约 15,000 个项目的 Movie 模型和一个包含 3500 个项目的 Dvd 模型。

以下查询是使用在 Heroku 上运行的 Crane Postgres 数据库的简单 Rails 关联。我想知道为什么以下查询需要这么长时间,我最终如何才能减少它的时间。

2012-10-24T05:42:19+00:00 app[postgres]: [30-1] [BLACK] LOG:  duration: 57.914 ms  statement: SELECT  "movies".* FROM "movies"  WHERE "movies"."dvd_id" = 37 ORDER BY scene LIMIT 1
2012-10-24T05:42:20+00:00 app[postgres]: [31-1] [BLACK] LOG:  duration: 77.086 ms  statement: SELECT  "movies".* FROM "movies"  WHERE "movies"."dvd_id" = 915 ORDER BY scene LIMIT 1
2012-10-24T05:42:20+00:00 app[postgres]: [32-1] [BLACK] LOG:  duration: 85.602 ms  statement: SELECT  "movies".* FROM "movies"  WHERE "movies"."dvd_id" = 108 ORDER BY scene LIMIT 1
2012-10-24T05:42:21+00:00 app[postgres]: [33-1] [BLACK] LOG:  duration: 70.147 ms  statement: SELECT  "movies".* FROM "movies"  WHERE "movies"."dvd_id" = 11 ORDER BY scene LIMIT 1
2012-10-24T05:42:21+00:00 app[postgres]: [34-1] [BLACK] LOG:  duration: 144.204 ms  statement: SELECT  "movies".* FROM "movies"  WHERE "movies"."dvd_id" = 6 ORDER BY scene LIMIT 1
2012-10-24T05:42:22+00:00 app[postgres]: [35-1] [BLACK] LOG:  duration: 56.623 ms  statement: SELECT  "movies".* FROM "movies"  WHERE "movies"."dvd_id" = 1956 ORDER BY scene LIMIT 1
2012-10-24T05:42:23+00:00 app[postgres]: [36-1] [BLACK] LOG:  duration: 64.860 ms  statement: SELECT  "movies".* FROM "movies"  WHERE "movies"."dvd_id" = 747 ORDER BY scene LIMIT 1

最佳答案

您可以直接连接到您的数据库 CLI,然后使用 PostgresQL EXPLAIN 命令获取有关它如何运行您的查询的信息。这可以显示可以向表中添加索引以加快处理速度的位置。 Postgres docs更详细地解释(看到我在那里做了什么?)EXPLAIN

关于ruby-on-rails - 简单的 Postgres 查询在 Heroku 上运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13043639/

相关文章:

ruby-on-rails - 如何使用 Rails 4.2 和 Postgresql 9.4 计算 jsonb 字段的平均值?

arrays - 使用 excel 文件内容初始化对象并保存到数据库

sql-server-2008 - postgresql中如何编写索引查询

ruby-on-rails - 查找至少具有一个关联的记录,但排除任何关联都符合条件的记录

ruby-on-rails - 使用 HMABTM 验证所有权的最佳方式

ruby-on-rails - 环境变量或 YAML 配置文件

ruby-on-rails - LoadError 无法自动加载常量

ruby-on-rails - 如何向 form_with 添加隐藏字段?

ruby-on-rails - 如何设置用于播种的 Rake 任务

mysql - 从 Rails 中的事件记录中获取特定列值