我正在参加「掘金·启航计划」
背景
经过一段时间的开发,客户的需求也实现的差不多了。
开始关注于一些报表,特别一些综合的报表取展示效果慢,
这些报表的一些问题数来源多(多个业务模块)、数据取数展示逻辑比较复杂(一些层级关系、支持一些公式,一些时间段的取数不同)。
开始想往sql优化上进行
主要加一些索引,有固定数据的比如字典关联的直接限定住、not null、like的一些优化。
奈何因为涉及的业务种类比较多、再加上业务和sql的功力不够效果不明显放弃了。
接着只能从代码上做一些调整
1.主要是做张临时表,保存当天的数据(和客户沟通后主要是当天的数据),用定时任务去刷新.
为了提高定时任务执行效率可以用线程去跑每个业务的数据。
2.把查询的sql拆分出每个业务块的,当前端先择某个业务块的时候,只查询当前业务的;但当查询所有内容的时候还是走之前的大sql
3.通过上面处理之后当天的数据走临时表,
非当天数据如果有业务分类的话走拆分的单独sql,
非当天数据全量查询走拆分前的关联sql
遇到的一个双报表调整
一个页面要了两个报表,区别再与取数日期区间,开始这里直接用两个单独代码块处理了。
后续公用的数据信息查询单独查询然后共用,后续把两个变为多线程处理。