记录一次慢查询优化

发表于
2

较早之前优化的内容,有点忘了,所以想着记录一下

背景描述:某个后台页面,分页查询列表数据。以借据维度返回分页数据(一个客户可以有多个借据,一个借据可能有多个还款计划),但是当前系统的数据库,并没有存储借据维度的数据,只从核心系统拉取了还款计划维度数据,并以还款计划维度存储到数据库中。而历史查询方式是通过group by直接查询还款计划维度数据并分组取当前借据最大逾期天数的还款计划,获取到之后再用left join关联催收记录表(客户维度的)。没错,使用的是一个奇长无比的SQL,这其中还有各种条件,要根据筛选框选择的内容实时查询,并且排序字段和升序降序也不固定。

优化的点:

  1. 新增一个借据维度的表(凌晨拉取核心系统的还款计划数据时更新,以及还款后通过rabbitMQ通知更新),具体更新逻辑类似于还款计划表的更新。查询的时候直接查询借据维度数据即可。

  2. 查询的时候,直接根据借据维度排序分页之后,再查询催收记录表,进行关联,毕竟一页最大也就几十条,查询出当前页面数据之后,再查询关联表就可以了,应用层面进行关联查询,而不是直接用join语句。

主要优化思路就是:不要查全表,尽可能利用索引查询和数据库分页


0