最近遇到查询列表这样的简单逻辑,但是查询条件是在多方,并且是用分页插件,之前数据量少的时候是使用join关联查询,把多方的条件拼接在sql中,但是不能集成PageHelper,只能手动分页,,还可以满足也无需求,
现在的遇到的场景是数据量已经达到了500W+的级别,这种方法就行不通了,昨天去试了mybatis的一对多关联查询,但是多方的条件只是对应了多方的数据能否被查出,头大
可以集成PageHelper的,建议参考一下下面这篇文章哈~
你都问了无数次了,既然那玩意使用起来不好使,那就自己写sql,第一次对1的表数据分页,然后用in查询多的表 这很为难嘛?
mybatis resultmap collection 支持select,也是一样的效果,只是这个查询次数就比上面的要多了(这相当于把in里面的数据一条条的去查)
数量级达到 550W+ 的这种情况,所有的sql语句优化都是短解,建议考虑分表分库的策略。因为大部分业务,数量量都是持续递增的。不分表分库的话,从sql语句上可以做以下尝试,看能否找到适合你业务的,1、根据不同的查询条件选择主表,这样分页功能可能根据不同的查询条件,有多个sql语句。2、尝试引入 Redis 缓存,一部分字段数据从缓存中查询。3、业务层面上做拆分,尽量保证业务的情况下减少关联。4、考虑存储过程。5、检查是否能从索引层面做优化。