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

mybatisplus.BaseMapper#selectPage 使用方法

使用 com.baomidou.mybatisplus.mapper.BaseMapper#selectPage 方法查询分页列表时,在mysql层面会执行两条sql,一条是count,另一条才是获取分页数据,大部分场景下我们都可以直接使用这个方法来进行查询,但是一些特殊场景下这个获取总数的sql会比获取分页数据执行的耗时更高。

列子

1.count 查询

    SELECT user_identifier, transaction_date, monetary_unit, SUM(incoming_value) AS total_incoming, SUM(ABS(outgoing_value)) AS total_outgoing, SUM(closing_value) AS total_balance FROM financial_records_summary WHERE user_identifier = ? AND transaction_date >= ? AND transaction_date <= ? GROUP BY user_identifier, transaction_date, monetary_unit ORDER BY transaction_date DESC, monetary_unit, total_balance DESC
) AS aggregated_results

2.分页信息查询

SELECT user_identifier, transaction_date, monetary_unit, SUM(incoming_value) AS total_incoming, SUM(ABS(outgoing_value)) AS total_outgoing, SUM(closing_value) AS total_balance 
FROM financial_records_summary 
WHERE account_owner = ? AND transaction_date >= ? AND transaction_date <= ? 
GROUP BY user_identifier, transaction_date, monetary_unit 
ORDER BY transaction_date DESC, monetary_unit, total_balance DESC 
LIMIT 0, 10

当数据量足够大的时候,第一个sql查询耗时是第二个sql查询耗时的两倍多,原因主要是以下几点:

  • COUNT需要处理全部结果集
  • 数据查询有LIMIT限制可能提前终止
  • 子查询中的ORDER BY对COUNT来说是多余开销

通过移除不必要的操作可以大幅度优化这个sql的性能

http://www.xdnf.cn/news/13295.html

相关文章:

  • 服务器内存能不能用在台式机上
  • 模板语法中的插值语法详解
  • innodb 数据页结构
  • SpringBoot集成Tess4j :低成本解锁OCR 图片识别能力
  • 论文略读: CUT YOUR LOSSES IN LARGE-VOCABULARY LANGUAGE MODELS
  • YSYX学习记录(八)
  • 【51单片机】5. 矩阵键盘与矩阵键盘密码锁Demo
  • Debian系统简介
  • R7-4 统计单词的个数
  • 电影感户外柔和旅拍Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • C++ 智能指针
  • postgresql搭建与初始化
  • EtherCAT转CC-Link IE协议转换通讯助力库卡机器人与三菱PLC无缝对接
  • 【Linux篇】细品环境变量与地址空间
  • Qt Widget类解析与代码注释
  • day27/60
  • 可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
  • 前端技术 HTML iframe 详细解读
  • 每日算法 -【Swift 算法】删除链表的倒数第 N 个结点
  • 聊聊 Pulsar:Producer 源码解析
  • STL 6分配器
  • 智能文档结构化技术的应用,重塑合同管理模式
  • CSS Modules使用
  • [特殊字符] 以太坊智能合约:原理、执行与核心机制
  • 新能源汽车智慧充电桩管理方案:智能安全识别的实际应用
  • mysql为什么一个表中不能同时存在两个字段自增
  • Q: dify的QA分段方式,question、answer和keywords哪些内容进入向量库呢?
  • 【已解决】python的kafka-python包连接kafka报认证失败
  • 【在线五子棋对战】四、MySQL API 使用
  • 多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​