背景
当我们关联很多张表进行查询时,即便使用了分页插件进行查询,会发现还是很慢。
究其原因是分页插件都会先进行COUNT()查询,这个操作相当慢。
解决思路
- 改数据库表为宽表,降低关联次数
- 将查询操作拆成两个步骤
- 去掉与where无关的关联表,进行查询,供COUNT计算总数,且返回id array
- 根据步骤1得出的id array,再做全数据的查询,用主键 in 来精准查。
效果
线上1分钟,是因为设置接口超时时间为1分钟,实际远远超过这个时间…
优化后,同样的参数只需要1秒。
当我们关联很多张表进行查询时,即便使用了分页插件进行查询,会发现还是很慢。
究其原因是分页插件都会先进行COUNT()查询,这个操作相当慢。
线上1分钟,是因为设置接口超时时间为1分钟,实际远远超过这个时间…
优化后,同样的参数只需要1秒。