首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提高基于解释/索引的查询性能

如何提高基于解释/索引的查询性能
EN

Stack Overflow用户
提问于 2014-12-26 23:43:07
回答 1查看 69关注 0票数 0
代码语言:javascript
复制
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方面存在技术问题,因此我将尝试描述以下设置的索引:

索引:

  • journey.pattern
  • journey.departure
  • journey.end
  • pattern.code
  • pattern.section
  • link.section

独特:

  • journey.code
  • journey_day.journey + journey_day.day

对为什么会发生这种事有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-12-27 03:51:57

几个要提到的项目..。您似乎在单个列上有索引,而不是由多个字段组成的复合索引,尤其是对table的索引。我建议如下索引

代码语言:javascript
复制
journey  (departure, end, code, pattern )
journey_day ( journey, day )
pattern (code)
link (section)

第二,您只是从table中获取代码,但实际上没有从模式或链接表中执行任何操作,因此我不知道您为什么将它们包括在查询中,可以简化为

代码语言:javascript
复制
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 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27663079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档