情况:
负责的其中一张报表,左连接八张表,其中子查询多个,where条件多个,一分钟只能查询1000条左右数据,要进行优化
想法:
前期想,除了已有的索引,再加入适量索引,最终结论是被pass掉,不合适
之后做法:
1.查询字段
首先查询字段从少增加,包括子查询,依次增加,找到那个属性或者子查询获得的时间长
2.多表连接
我们使用的左连接,保证主表信息(但要保证从表只有一条信息进行对接)
从基础表,依次左连接,或者取出连接表,找出响应时间长的表
3.where条件
在条件中,依次注释条件,找出时间最长的限制条件
最终结果,发现一张基础信息表之中,调用过多,获取时间最长(机构基础信息表数据过多五千多条),
最终想的是,把依赖的字段从这个机构表中拿出来,在主表中加个字段,放进去,效果还行,(改一下之前主表插入修改的逻辑)
结论:我的做法就是,依次增加条件或者字段,找出响应时间最长的字段、或者表,看看是否能够更改部分逻辑,进行优化,目前3000条数据,20秒就能查出
当然还有另一种情况处理:
拉大表,跑批,报表数据从大表中获取,(但是数据肯定是看跑批的情况,部分是不能及时拉出的)
希望所写的你们能用到