分页

SpringBoot 集成分页插件pageHelper导致分页参数失效

假装没事ソ 提交于 2020-03-24 13:26:40
1、Bug复现   postman测试时,传入当前页pageNum,每页显示条数:pageSize,两个参数之后,不管pageSize传入任何之后,接口返回值中的pageSize都是固定不变的,与传入值不一致。 2、问题分析 出现问题,先看配置 2.1 pom文件检查 <!-- pageHelper分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.12</version> </dependency> 看完之后,发现并没有什么问题。 2.2 application.yml配置检查 # pageHelper分页配置 pagehelper: helper-dialect: mysql reasonable: false support-methods-arguments: true params: count=countSql 看了一下配置,网上有博主说,是reasonable参数配置的问题。 问题就在reasonable这个参数配置上,reasonable可以理解为是否开启自动优化默认为false,如果为true当查询的页码无数据时就会返回离输入的页码最近含数据的页码数据

前端分页功能实现(PC)

筅森魡賤 提交于 2020-03-23 06:15:22
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>加载</title> <style> #page a{ margin:0 10px; color: #999; } #page a.active{ color:#0000ee; } </style> </head> <body> <div class="pagination-nick"> <div id="list"></div> <div id="page"></div> </div> <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <script> var pager = { pageIndex:1,//当前页码 pageCount:10,//每页显示多少条数据 pageMax:0,//数据有一共多少页 } var obj={other:{},value:[11,21,31,41,51,61,71,81,91,1,12,22,32,42,52,62,72,82,92,2,13,23,33,43,53,63,73,83,93,3,14,24,34,44,54,64,74,84,94,4,99999999999]};//模拟数据 $(function(){ //一共有多少页

MySQL大数据量分页性能优化

亡梦爱人 提交于 2020-03-21 15:47:08
mysql大数据量使用limit分页,随着页码的增大,查询效率越低下。 测试实验 1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from product limit start, count 当起始页较小时,查询没有性能问题,我们分别看下从10, 100, 1000, 10000开始分页的执行时间(每页取20条), 如下: select * from product limit 10, 20 0.016秒 select * from product limit 100, 20 0.016秒 select * from product limit 1000, 20 0.047秒 select * from product limit 10000, 20 0.094秒 我们已经看出随着起始记录的增加,时间也随着增大, 这说明分页语句limit跟起始页码是有很大关系的,那么我们把起始记录改为40w看下(也就是记录的一般左右) select * from product limit 400000, 20 3.229秒 再看我们取最后一页记录的时间 select * from product limit 866613, 20 37.44秒 难怪搜索引擎抓取我们页面的时候经常会报超时,像这种分页最大的页码页显然这种时 间是无法忍受的。

16、使用limit offset 分页时,为什么越往后翻越慢?如何解决?

两盒软妹~` 提交于 2020-03-21 12:28:03
在mysql中limit可以实现快速分页,但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页了,否则可能卡死你的服务器哦。 当一个表数据有几百万的数据的时候成了问题! 如 * from table limit 0,10 这个没有问题 当 limit 200000,10 的时候数据读取就很慢,可以按照一下方法解决 第一页会很快 PERCONA PERFORMANCE CONFERENCE 2009上,来自雅虎的几位工程师带来了一篇”EfficientPagination Using MySQL”的报告 limit10000,20的意思扫描满足条件的10020行,扔掉前面的10000行,返回最后的20行,问题就在这里。 LIMIT 451350 , 30 扫描了45万多行,怪不得慢的都堵死了。 但是,limit 30 这样的语句仅仅扫描30行。 那么如果我们之前记录了最大ID,就可以在这里做文章 举个例子 日常分页SQL语句 select id,name,content from users order by id asc limit 100000,20 扫描100020行 如果记录了上次的最大ID select id,name,content from users where id>10073 order by id asc limit 20 扫描20行。

操作系统-内存分区与分页

旧巷老猫 提交于 2020-03-20 23:23:08
接下来的问题是内存怎么分割? 这样就可以将程序的各个段载入到相应的内存分区中 1. 固定分区与可变分区 2. 可变分区的管理过程 核心数据结构 请求分配 释放内存 再次申请 例题: 3. 引入分页 解决内存分区导致的内存效率问题 1. 可变分区造成的问题 2. 从连续到离散 3. 接下来就是页表 来源: https://www.cnblogs.com/mengd/p/12535132.html

mysql、sql server、oracle数据库分页查询及分析(操作手册)

南笙酒味 提交于 2020-03-20 06:51:49
1、mysql分页查询 方式1: select * from table order by id limit m, n;   该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录。无疑该查询能够实现分页功能,但是如果 m的值越大,查询的性能会越低 (越后面的页数,查询性能越低),因为MySQL同样需要扫描过m+n条记录。 方式2: select * from table where id > #max_id# order by id limit n;   该查询每次会返回n条记录,却无需像方式1扫描过m条记录,在大数据量的分页情况下,性能可以明显好于方式1,但该分页查询必须要每次查询时拿到上一次查 询(上一页)的一个最大id(或最小id)。该查询的问题就在于,我们有时没有办法拿到上一次查询(上一页)的最大id(或最小id),比如当前在第3 页,需要查询第5页的数据,该查询方法便爱莫能助了。 方式3:   为了避免能够实现方式2不能实现的查询,就同样需要使用到limit m, n子句,为了性能,就需要将m的值尽力的小,比如当前在第3页,需要查询第5页,每页10条数据,当前第3页的最大id为#max_id#: select * from table where id > #max_id# order by id limit 20, 10;  

数据库分页操作【转自:http://www.cnblogs.com/tom-fu/archive/2008/08/11/1265291.html】

天大地大妈咪最大 提交于 2020-03-20 06:45:36
关于数据库中分页的过程,网上大把。有通用的分页存储过程,高效的分页存储过程。但是,这些并没有从根本上解决性能问题。我们知道对于相同的查询,如果你限制每页返回10条记录和每页返回20条记录比,虽然10条记录在网络和返回结果时会比20条记录要稍稍占一点优势。但是它要花比20条记录时2倍的访问次数,因此从总的资源消耗来看10条记录会占用更多的资源。但是用户的操作你永远是无法预测的,它可能只是看了第1页然后就退出了。我想一般用户也很少会去查看第20页之后的信息吧,除非他是钓鱼爱好者!因此,在确定每页多少条记录时没有标准。同时,一般的分页过程的查询条件都是动态的,用户可以任意的排序。因此,这样的查询你无法确定应该在哪些字段上创建索引合适。这样的查询一般来说都是很低效的。因为动态,所以你的分页过程可能每次都需要重新编译才能得到最优的执行计划。 那么是不是我们把每页返回的记录数调整的越大越好,或是一次把全部的结果返回给客户?我们知道SQLServer会把最终的结果保存到数据缓冲区中。你每次请求的SQL语句在执行之前会在服务端预先分配估计结果集大小的可用物理内存,除非你查询的结果集已经全部存在于缓存中了。如果迟迟不能预先分配能够保存最终结果的可用物理内存,则这个查询最终就会以超时而结束。同时,分页过程中一般都会对结果集进行排序。而排序、Hash联结、Hash聚合等操作都需要占用大量内存

关于水晶报表分页无效问题

末鹿安然 提交于 2020-03-19 13:57:08
最近的项目中,需要用到水晶报表进行报表处理。要求报表字段可动态设置,依据用户定义的需要进行字段显示。基本功能已经可以实行,但最后通过实际数据测试的时候发现,如下问题: 在数据量达到分页为三页以上后,水晶报表自带的分页功能无效了。即,第一页、第二页正常,在第二页中点击后一页无法转到第三页。在最后一页点击上一页就自动跳转到第一页。也就是,水晶报表翻页无效。 在网上搜索一直没有找到相关问题解决方法。最将该动态构建报表程序整理为一个类的时候发行问题所在,并解决问题。 原来,在构建报表的时候,动态设置的报表视图的 ParameterFieldInfo 的参数字段集合ParameterFields 。当提交服务器返回后,再次构建报表视图时,不需要进行设置该参数字段。即,只在第一次构建报表视图时对ParameterFieldInfo设置一次参数字段即可。 可以放在 if (!this.IsPostBack) { //创建ParameterFields 集合的代码 } 问题解决。 写在这里,希望能帮助更多碰到同样问题的朋友解决问题。 在VS2005、VS2008中遇到这样的问题直接将你页面的Page_Load中的方法修改为Page_Init方法即可。 protected void Page_Load(object sender, EventArgs e) { LoadReport(); } 修改为

谈谈DWZ table的原生分页

无人久伴 提交于 2020-03-19 07:18:58
最近在项目开发当中很少会用到DWZ原生的table分页,往往是使用jqgrid or grid这种第三方数据绑定的表格插件,如今在项目中要求了,就必须要使用DWZ自带的table了 接下来看一段代码,我会给大家详细介绍DWZ中table分页的使用方式,以下是在MVC中实现的方式。 <div class="pagination" targetType="navTab" totalCount="@ViewBag.totalCount" numPerPage="@ViewBag.numPerPage" pageNumShown="@ViewBag.pageNumShown" currentPage="@ViewBag.currentPage"></div> 属性介绍 targetType:绑定方式,DWZ这里提供了"navTab" and "dialog"这两种方式,顾名思义就是分页是在标签页上还是弹出层上 totalCount:数据总行数 numPerPage:当前页数据行数 pageNumShown:总页数 currentPage:当前页码 @using (Html.BeginForm("BidPrjList", "TbUnify", null, FormMethod.Post, new { id = "pagerForm" })) { <input type="hidden"

lodop打印分页方法(转)

依然范特西╮ 提交于 2020-03-17 11:52:05
//表格自动分页,下一页没页头、页脚、表头 LODOP.ADD_PRINT_HTM(10,"5%","90%","90%",document.getElementById("print").innerHTML); //表格自动分页,下一页有页头、页脚、表头 //内容 LODOP.ADD_PRINT_TABLE(160,"5%","90%","60%",document.getElementById("print-bodyer").innerHTML); LODOP.SET_PRINT_STYLEA(0,"Vorient",3); //页头 LODOP.ADD_PRINT_HTM(30,"5%","90%",120,document.getElementById("print-header").innerHTML); LODOP.SET_PRINT_STYLEA(0,"ItemType",1); LODOP.SET_PRINT_STYLEA(0,"LinkedItem",1); //页脚 LODOP.ADD_PRINT_HTM(444,"5%","90%",54,document.getElementById("print-footer").innerHTML); LODOP.SET_PRINT_STYLEA(0,"ItemType",1); LODOP.SET_PRINT