MySQL Monster查询优化

瓦西里802

我有一个很久以前开发的大型MySQL查询。它远非完美,现在是优化它的时候了。我什至不知道从哪里开始,也许将索引添加到所涉及的表中?还是将查询细分为子查询,将其存储为视图,然后使用这些视图重新组合结果?请告诉我您将如何处理此类任务。

链接到查询:http : //pastebin.com/sVvW8PCc

使用的MySQL版本:5.0.96

目前加载时间约为6.5秒,我希望将此时间减少到2秒或更短。

先感谢您!

阿格里佐

如果没有索引,请先执行。

看起来您在每个UNION中使用相同的查询,只是更改了通配符(换句话说,联接都是相同的,只是通配符不同。)如果是这样,则仅关注UNION的一部分(例如, WIND),并确保其运行效率尽可能高。然后,您可以将更改复制到其他更改。

我怀疑(如果前面的语句是正确的)您可以通过CASESELECT子句中使用一条语句来将UNION查询合并为一个(您还需要使用GROUP BY)

您通常会确定MAX(d_updated)。我不确定MySQL是否缓存该结果或是否每次都尝试确定它。为什么不在执行此查询之前一次确定该值,然后将其作为硬编码值发送回您的查询中?

最后,我建议您使用Views,不是为了提高性能,而是为了提高可读性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章