假设您为电视节目创建了一个 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/