ruby-on-rails - 第二个 foreign_key 加速查询

标签 ruby-on-rails ruby postgresql activerecord

假设您为电视节目创建了一个 imdb 类型的网站。您有一个 Show,其中包含许多附加的 episodes 和一群 people

现在我通过contribution 表将people 链接到episodes - 但如果我想列出所有显示他们正在播放,我必须通过剧集。

由于此查询需要很长时间,所以我考虑将 show_id 添加到 contributions 表中。这是提高性能的常见做法还是我没有想到的另一种方法?

最佳答案

Since this query takes a long time

您是否运行过 SQL 解释计划来说明为什么会这样?正在运行的实际 SQL 查询是什么,您是否在其中执行诸如排序或运行子查询之类的操作?

如果我理解你的结构,它是这样的:

|people| n---1 |contribution| 1---n |episodes| n---1 |shows|

这种类型的 sql 选择:

select distinct s.name 
from   shows s,
       episodes e,
       contribution c
where  c.people_id = <id>
and    c.episode_id = e.id
and    e.show_id = s.id

应该真的没有性能问题,除非表上没有索引或表很大。

关于ruby-on-rails - 第二个 foreign_key 加速查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35311678/

相关文章:

ruby-on-rails - Trie gem 中的 Ruby 重写方法 - 未定义方法

ruby-on-rails - 如何在 Ruby 中正确链接自定义方法?

Ruby Mechanize - 创建自定义 "Submit"按钮

ruby - 如何在 Windows 上自动重启 ruby​​ 脚本?

java - Hibernate 和 PostgreSQL - 检查 setParameterList 中传递的集合是否为空

ruby-on-rails - 设计,跳过确认,直到用户尝试做一些有意义的事情

ruby-on-rails - $undefined 和 $end 在 Ruby 中指的是什么?

ruby-on-rails - 我如何在 rake 任务中强制使用 RAILS_ENV?

php - Postgresql 更新唯一列并在更新前验证

postgresql 过程/触发器