SELECT journey.code
FROM journey
JOIN journey_day ON journey_day.journey = journey.code
JOIN pattern ON pattern.code = journey.pattern
JOIN link ON link.section = pattern.section
WHERE journey_day.day = 5 AND TIME(NOW()) BETWEEN journey.departure AND journey.end
GROUP BY journey.code上面的查询平均需要500 1s 1s。这是一个解释的屏幕截图:http://i.imgur.com/YqSdrAH.png
我不明白为什么要花这么长时间,我正在优化查询,以便它执行<= 100‘s。
遗憾的是,Sadly目前在构建图表/查看Fiddle方面存在技术问题,因此我将尝试描述以下设置的索引:
索引:
独特:
对为什么会发生这种事有什么想法吗?
发布于 2014-12-27 03:51:57
几个要提到的项目..。您似乎在单个列上有索引,而不是由多个字段组成的复合索引,尤其是对table的索引。我建议如下索引
journey (departure, end, code, pattern )
journey_day ( journey, day )
pattern (code)
link (section)第二,您只是从table中获取代码,但实际上没有从模式或链接表中执行任何操作,因此我不知道您为什么将它们包括在查询中,可以简化为
SELECT DISTINCT j.code
FROM journey j
JOIN journey_day jd
ON j.code = jd.journey
AND jd.day = 5
WHERE
TIME(NOW()) BETWEEN j.departure AND j.end https://stackoverflow.com/questions/27663079
复制相似问题