我有这个问题 - 但这需要很长时间。 我在维基百科上读到,加入顺序可能是一个因素:
查询计划的性能很大程度上取决于表的连接顺序。例如,当分别连接3个大小为10行,10,000行和1,000,000行的表A,B,C时,首先连接B和C的查询计划可以花费几个数量级的时间来执行,而不是一个首先加入A和C
我正试图通过他们的剧集播放一部演员的电视节目。
我的查询如下:
select distinct e.show_id
from episodes e
where e.id IN
(select c.episode_id
from contributions c
where c.person_id = #{@person.id})
")
每个的列数是:
我是在正确的轨道上还是应该加入?即使所有内容都有索引,此查询有时也会在heroku上花费10秒以上。
答案 0 :(得分:0)
尝试使用JOIN而不是嵌套的select和IN。这样的事情:
SELECT distinct e.show_id
FROM episodes e
JOIN contributions c
ON e.id = c.episode_id
WHERE c.person_id = @person.id