广告
返回顶部
首页 > 资讯 > 数据库 >PageHelper插件count效率优化
  • 792
分享到

PageHelper插件count效率优化

javamysql 2023-09-03 16:09:46 792人浏览 安东尼
摘要

PageHelper是项目中常用的分页插件,它在完成分页的过程中会执行两条sql: limit分页sqlcount查总数sql(在不关闭插件count的前提下) 对于百万级以上的数据表,只要添加好索引,limit语句的速度很快,但是coun

PageHelper是项目中常用的分页插件,它在完成分页的过程中会执行两条sql

  1. limit分页sql
  2. count查总数sql(在不关闭插件count的前提下)

对于百万级以上的数据表,只要添加好索引,limit语句的速度很快,但是count语句的速度可能会非常慢,导致出现慢sql。

下面结合项目中实际遇到的一次慢sql优化,对PageHelper插件的count效率优化做一个总结

问题描述

项目中存在如下sql:

select count(0)from table1 as aleft join table2 as b on a.aid = b.aidleft join table 3 as c on a.aid = c.aid and a.vin = c.vinwhere 1 = 1-- ifxxx1不是nulland a.xxx1 = xxx1-- ifxxx2不是nulland b.xxx2 = xxx2-- ifxxx3不是nulland c.xxx3 = xxx3;

这个sql的特点是:

  1. 用来计算总数,是pagehelper插件自动执行的
  2. 使用了left join,即以左表的数据为主
  3. where条件涉及了abc三张表,where条件将影响count的结果

腾讯云监控到的慢sql是:

select count(0)from table1 as aleft join table2 as b on a.aid = b.aidleft join table 3 as c on a.aid = c.aid and a.vin = c.vinwhere 1 = 1

即xxx1,xxx2和xxx3的查询条件不传入时会产生慢sql,通过explain分析,该慢sql走了全表扫描,扫描数据120w+,耗时2.5s左右。

下面的问题就是如何对这条sql进行优化。

PageHelper的count优化方法

方法1:关闭自动count

PageHelper.startPage(start, limit, false);

优点是简单粗暴,直接消灭自动执行的count语句,缺点是返给前端的参数里就没有真实的total了,前端只能做个假分页。

方法2:使用自定义的count语句代替自动执行的

在mapper.xml的这条查询语句下面再写一个查询:

  select * from table1            aid = #{aid,jdbcType=VARCHAR}      

 此时去掉了两次left join,虽然还是会走全表扫描,但执行时间从2500ms降低到了80ms。

而当输入了xxx2或xxx3条件时,就不关闭pagehelper的自动count,但是此时因为输入了具体的过滤条件,整个扫描的行数减少了很多,也就不会出现执行时间过长的问题了。

 

 

来源地址:https://blog.csdn.net/weixin_45712835/article/details/128519708

您可能感兴趣的文档:

--结束END--

本文标题: PageHelper插件count效率优化

本文链接: https://www.lsjlt.com/news/392428.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PageHelper插件count效率优化
    PageHelper是项目中常用的分页插件,它在完成分页的过程中会执行两条SQL: limit分页sqlcount查总数sql(在不关闭插件count的前提下) 对于百万级以上的数据表,只要添加好索引,limit语句的速度很快,但是coun...
    99+
    2023-09-03
    java mysql
  • SpringBoot+Mybatis分页插件PageHelper实现分页效果
    目录一、项目结构二、插件引入三、代码四、测试:        最近刚入职新公司,项目是从零开始搭建的项目。我觉得是时候考验是驴还是千里马的时候...
    99+
    2022-11-12
  • 优化python执行效率
    开始优化前,写一个高级测试来证明原来代码很慢。你可能需要采用一些最小值数据集来复现它足够慢。通常一两个显示运行时秒的程序就足够处理一些改进的地方了。有一些基础测试来保证你的优化没有改变原有代码的行为也是很必要的。你也能够在很多次运行测试来优...
    99+
    2023-01-31
    效率 python
  • 如何优化Shell脚本效率
    这篇文章将为大家详细讲解有关如何优化Shell脚本效率,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、先说一下Shell脚本语言自身的局限性 作为解释型的脚本语言,天生就有效率上边的缺陷。尽管它调用的其...
    99+
    2023-06-09
  • Windows内存效率的优化方法
    如何优化内存的管理,提高内存的使用效率,尽可能地提高运行速度,是我们所关心的问题。下面介绍在Windows操作系统中,提高内存的使用效率和优化内存管理的几种方法。   1、改变页面文件的位置   其目的主要是为了保持虚拟...
    99+
    2023-05-23
    方法 优化 效率 内存 文件 页面 系统 虚拟
  • 如何在Java开发中优化文件操作的效率?
    在Java开发中,文件操作是非常常见的操作,但是由于文件操作涉及到磁盘IO等操作,因此效率可能会受到一定的影响。本文将会介绍如何在Java开发中优化文件操作的效率,以便提高程序的性能。 一、使用缓冲流 Java中提供了两种文件读写方式:字节...
    99+
    2023-09-12
    关键字 开发技术 文件
  • Python 分布式框架如何优化文件处理效率?
    在现代计算机系统中,大量的数据需要通过文件进行存储和传输。因此,文件处理的效率成为了计算机系统中一个非常关键的问题。为了解决这个问题,我们可以利用分布式框架来优化文件处理效率。本文将介绍Python分布式框架的基本概念以及如何使用它来优化...
    99+
    2023-10-14
    分布式 框架 文件
  • MyBatis批量插入数据优化,增加一个参数,效率提升百倍
    项目中进行接口压测,发现批量插入的速度有点超出预期,感觉很奇怪,经过定位后发现mybatise-plus批量保存的处理十分缓慢,使用的是saveBatch方法,这点有点想不通。于是就进行了相关内容分析。 根据mybatise-plus中s...
    99+
    2023-10-25
    mybatis java 数据库
  • Bash 脚本如何优化存储效率?
    Bash 脚本是一种非常流行的脚本语言,可以用来自动化完成各种任务,例如文件操作、数据处理、系统管理等。然而,当脚本需要处理大量数据时,存储效率就成为一个非常重要的问题。在本文中,我们将介绍一些 Bash 脚本优化存储效率的方法。 使用...
    99+
    2023-11-07
    并发 bash 存储
  • 优化Windows Server 2008提升上网效率
    相信不少朋友都是冲着Windows Server 2008系统功能强大、安全性能高等优势,来尝鲜试用它的;也正是由于此,Windows Server 2008   首先以系统管理员权限进入Windows Server 2...
    99+
    2023-05-24
    Windows7 任务栏窗口 预览 Windows Server 2008 上网 效率
  • MySQL中如何优化Order By Rand()效率
    这篇文章主要介绍了MySQL中如何优化Order By Rand()效率,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 最近由于需要大概研...
    99+
    2022-10-19
  • PHP如何优化接口执行效率
    小编给大家分享一下PHP如何优化接口执行效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!造成执行效率低的原因可以由很多方面找原...
    99+
    2022-10-19
  • python多线程效率低如何优化
    有几种方法可以优化Python多线程的效率: 使用Python的多进程模块:由于Python的全局解释器锁(GIL)限制了多线程...
    99+
    2023-10-25
    python
  • 如何在 Linux 中运用算法优化文件处理效率?
    对于 Linux 系统用户来说,文件处理是日常工作中最常见的任务之一。无论是从网络上下载大文件,还是从本地磁盘中查找特定文件,文件处理的效率都会直接影响到工作效率。本文将介绍一些算法技巧,帮助你在 Linux 中优化文件处理效率。 一、使...
    99+
    2023-08-21
    编程算法 linux 文件
  • ASP IDE如何优化打包加载效率?
    ASP IDE是一款广泛使用的IDE工具,它可以帮助开发人员更加方便地进行ASP网站开发。然而,在ASP网站开发中,打包加载效率是一个非常重要的问题。如果打包加载效率不高,网站的访问速度就会变慢,用户体验也会受到影响。那么,ASP IDE...
    99+
    2023-08-21
    ide load 打包
  • Android ListView优化之提高android应用效率
    ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。Adapter是listview和数据源间的中间人。 当每...
    99+
    2022-06-06
    listview 效率 Android
  • python中怎么优化ChainMap的调用效率
    python中怎么优化ChainMap的调用效率?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python的五大特点是什么python的五大特点:1.简单易学,...
    99+
    2023-06-14
  • 提升工作效率的常用Idea插件有哪些
    本篇内容介绍了“提升工作效率的常用Idea插件有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lomb...
    99+
    2022-10-19
  • 提高开发效率的Vue3常用插件有哪些
    这篇文章主要介绍“提高开发效率的Vue3常用插件有哪些”,在日常操作中,相信很多人在提高开发效率的Vue3常用插件有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”提高开发效率的Vue3常用插件有哪些”的疑...
    99+
    2023-07-04
  • Go 语言编写 API 文件,如何优化算法提高效率?
    随着互联网技术的快速发展,越来越多的企业开始重视开放 API,将自身服务向外部开放,以实现更好的服务交互和数据共享。而 API 文件作为开放 API 的一部分,对于 API 的使用者来说,是非常重要的参考文档。因此,如何编写高质量的 AP...
    99+
    2023-06-24
    api 文件 编程算法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作