我有这个导致问题的查询,它平均在0.10秒运行。
z_watching有10k行,title有40k行,z_tv_episodes有400k行
大多数列都有索引。
我尝试过切换到简单的WHERE查询,但这并没有帮助。问题似乎是在剧集的排序发生时。 OR似乎不是问题。
查询执行此操作:查找用户正在z_watching中观看的所有节目,查找标题中的所有相应节目,然后对z_tv_episodes中的所有剧集进行排序(查找用户尚未观看且已经观看过的剧集播出)。
SELECT * FROM z_watching z
LEFT OUTER JOIN title t ON z.media_id = t.media_id
LEFT OUTER JOIN z_tv_episodes e ON
(e.media_id = t.media_id
AND e.episode_number > z.episode_watched
AND e.season_number = z.season_watched
AND e.episode_airdate < "2016-05-12"
AND e.episode_airdate != "0000-00-00")
OR
(e.media_id = t.media_id
AND e.season_number > z.season_watched
AND e.episode_airdate < "2016-05-12"
AND e.episode_airdate != "0000-00-00"
)
WHERE
z.user_id = 1
ORDER BY
t.title, e.episode_airdate ASC
任何帮助都会很棒!