LEFT OUTER JOIN给出慢查询

时间:2016-05-12 11:14:31

标签: mysql

我有这个导致问题的查询,它平均在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

任何帮助都会很棒!

0 个答案:

没有答案