问题描述:单表1数据30多万,单表2近40万,单表3 20多条数据,加了索引后,进行了不同连接的分析,left join
right join , join ,有一个30多万的表基本上是rows就是总行数,其他的二个表,rows都是1,进行分组统计,rows行是30多万的,查询速度第一次大概在1s左右,第二次以后查询大概是0.6s左右,估计是mysql的缓存机制,见图:
想问的是这种还能进行优化吗?这种查询速度是否是正常的?第三,是不是mysql涉及到分组统计的时候,都会生成临时表,并做排序?
一般mysql优化都是从索引入手的,但是索引这块水太深了。。。
集合的操作大部分都很快的,应该不会有啥影响,我感觉问题还在索引这里,1s的话说心里话还是有些慢,如果是接口,考虑上通信解析和读写,搞不好一个接口的rt会超过3s。
如果explain没啥问题,可以先缩小一下连接时左右的表的规则,一点一点排查,如果能部分关联,就别把两张整表去关联,毕竟数据库都是一条一条操作的,表大了join的速度也会慢。
确定了join的问题还是索引的问题,后面的就好说了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。