当前位置: 首页 > news >正文

sql逻辑优化

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

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

SQL如下:

<select id="querySystemList" resultMap="systemAduitMap" parameterType="java.util.HashMap">select * from system_aduitwhere 1=1<if test="keyword!=null and keyword!=''">			and opertion  like concat('%',#{keyword},'%')</if>limit #{offset},#{limit}
</select>

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

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

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

SQL如下:

<select id="queryListByParams" resultMap="systemAduitMap" parameterType="java.util.HashMap">select * from system_aduitwhere 1=1<if test="keyword!=null and keyword!=''">and opertion  like concat('%',#{keyword},'%')</if><if test="maxTime!=null and maxTime!=''">and create_time  &gt; #{maxTime}</if>limit #{limit}
</select>

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

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

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

http://www.lryc.cn/news/220335.html

相关文章:

  • 【数据结构】树与二叉树(一):树(森林)的基本概念:父亲、儿子、兄弟、后裔、祖先、度、叶子结点、分支结点、结点的层数、路径、路径长度、结点的深度、树的深度
  • 2024 Android Framework学习大纲之基础理论篇
  • 【深度学习】Yolov8 区域计数
  • Windows 系统服务器部署jar包时,推荐使用winsw,将jar包注册成服务,并设置开机启动。
  • npm 包管理
  • 力扣370周赛 -- 第三题(树形DP)
  • GPT学习笔记
  • Apex的addError()显示的消息中实现换行
  • STM32中微秒延时的实现方式
  • 2005-2021年全国各省家庭承包耕地面积和家庭承包耕地流转总面积数据(无缺失)
  • 【六、http】go的http的客户端重定向
  • AI:61-基于深度学习的草莓病害识别
  • idea文件比对
  • 重磅发布|美创科技新一代 数据安全管理平台(DSM Cloud)全新升级
  • 比SAM小60倍的分割一切模型:MobileSAM
  • 版本控制系统-SVN
  • 【电路笔记】-串联RLC电路分析
  • 大数据毕业设计选题推荐-家具公司运营数据分析平台-Hadoop-Spark-Hive
  • 【触想智能】工业显示器上市前的检测项目分享
  • Vue使用epubjs电子书
  • python机器学习——决策树
  • __attribute__((__used__)) 和 __attribute__((__section__(“*“ “*“)))的使用
  • webgoat-(A1)SQL Injection
  • Flink的API分层、架构与组件原理、并行度、任务执行计划
  • Transformer:开源机器学习项目,上千种预训练模型 | 开源日报 No.66
  • Corel VideoStudio 会声会影2024剪辑中间的视频怎么删 剪辑中音乐太长怎么办
  • 数据结构初阶---复杂度的OJ例题
  • Prometheus|云原生|grafana的admin用户密码重置备忘记录
  • [hive]中的字段的数据类型有哪些
  • 第六章 树【数据结构和算法】【精致版】