sql逻辑优化

1.分页 通常使用每页条数及第一页作为参数 开发接口

@GetMapping("/querySystemList")
public List querySystemList(@RequestParam("keyword") String keyword,
                                         @RequestParam(name = "offset", defaultValue = "0") int offset,
                                         @RequestParam(name = "limit", defaultValue = "20") int limit){
     HashMap params=new HashMap<>();
     if(StringUtils.isNotEmpty(keyword)){
         params.put("keyword",keyword);
     }
     params.put("limit",limit);
     params.put("offset",offset);
     List systemAduits = systemAduitMapper.querySystemList(params);
     return systemAduits;
}

SQL如下:

但是当数据量特别大的时候,查询速度会减慢很多,limit 10000,10  查询速度较慢

于是,在查询下一页数据时 将上一页的最大值当成参数作为查询条件进行查询

@GetMapping("/queryListByParams")
public List queryListByParams(@RequestParam("keyword") String keyword,
                                           @RequestParam("maxTime") String maxTime,
                                           @RequestParam("limit") int limit){
     HashMap params=new HashMap<>();
     if(StringUtils.isNotEmpty(keyword)){
          params.put("keyword",keyword);
     }
     if(StringUtils.isNotEmpty(maxTime)){
          params.put("maxTime",maxTime);
     }
     params.put("limit",limit);
     List systemAduits = systemAduitMapper.queryListByParams(params);
     return systemAduits;
}

SQL如下:

当数据量特别大的话,查询的速度 还是比较稳定的。

最近接触的项目,若是数据量很大时,则限制查询日期为一个月;或者定期将数据进行备份到另一个数据库,后查询该库;

有好的建议,欢迎大家评论!

你可能感兴趣的:(工作中遇到的问题,sql,数据库)