技术文档:优化数据量较大下的连表查
询性能
一、业务背景与挑战
在进行表a与表b的大规模连表查询时,由于表a数据量高达300万条,表b数据量更是
达到了500万条,加之查询条件中表b的orgid范围广泛(2k至6k+),导致查询性能
显著下降,初始查询时间竟长达20秒,无法满足业务需求。
二、优化历程与成效
1. 第一版优化:索引加持,速度提升
针对表b进行了索引优化,有效缩短了查询时间至10秒,性能提升显著。
2. 第二版优化:深度关联,再提速
进一步将表b与表c进行深度内关联(表c作为orgid的数据源),同时表a与关联结
果进行精准查询,查询时间再次缩短至5秒,性能持续优化。
3. 第三版优化:联合索引,突破瓶颈
在表b上实施了联合索引策略,查询时间进一步减少至3秒多。然而,此时发现
mybatis-plus分页查询在计算count时仍存在瓶颈。
4. 第四版优化:分页革新,挑战并存
将分页查询创新性地拆分为两个SQL语句:sql1专注于查询分页数据,sql2则负责
查询总数。然而,这一变革也带来了新挑战,将查询拆分为两个接口导致前端处理
时间过长,影响了用户体验。
三、终极解决方案:多线程并行,重塑性能