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

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.dtcms.com/a/242763.html

相关文章:

  • GO 语言中的flag包--易懂解释
  • 逆向工程:破解某金融App加密协议——在安全与法律的钢丝绳上行走
  • 常用数组方法、字符串方法、数组 ↔ 字符串 的转换、TS类型提示 (大全)
  • i++与++i的区别
  • B2B供应链交易平台多商户电商商城系统开发批发采购销售有哪些功能?发展现状如何?
  • 第14篇:数据库中间件的分布式配置与动态路由规则热加载机制
  • 使用 pytdx,`TdxHq_API` 接口下载数据的 AI 编程指引提示词
  • C++17 std::string_view:性能与便捷的完美结合
  • 5g LDPC编译码-LDPC编码
  • 解决启动SpringBoot是报错Command line is too long的问题
  • 玄机 日志分析-Tomcat日志分析 WriteUp
  • ES6从入门到精通:前言
  • Python实现prophet 理论及参数优化
  • postgresql|数据库|只读用户的创建和删除(备忘)
  • Manus 框架与 COKE 框架解析及完整 Demo
  • 从走线到互连:优化高速信号路径设计的快速指南
  • 复发白血病异基因造血干细胞移植后疗效的改进策略
  • 性能监控的核心要点
  • AI书签管理工具开发全记录(二十):打包(完结篇)
  • Oracle 数据库对象管理:表空间与表的操作
  • STL 5 适配器
  • leetcode_35.搜索插入位置
  • Vue 模板语法之指令语法详解
  • 如何xml序列化 和反序列化类中包含的类
  • 如何删除导出的xml中的xmlns:xsd=
  • 【无标题新手学习期权从买入看涨期权开始】
  • 分析VSS,VCC和VDD
  • 电路笔记(元器件):并串转换芯片 SN65LV1023A 10:1 LVDS 串行器/解串器变送器 100 至 660Mbps
  • Dispatch PDI(DPDI)kettle调度管理平台稳定版本,正式登场!
  • 突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合