Mysql——》limit分页
发布日期:2021-09-14 23:18:19
浏览次数:10
分类:技术文章
本文共 2835 字,大约阅读时间需要 9 分钟。
Mysql——》limit分页
一、物理分页 VS 逻辑分页
— | 物理分页 | 逻辑分页 |
---|---|---|
使用 | 数据库 | 使用:程序代码 |
访问数据库 | 每次访问数据库 | 只访问一次数据库,把所以数据缓存在内存中 |
占用内存 | 每次读取部分数据,内存占用相对较少 | 一次性将数据读取到内存,而在相对占用较多 |
实时 | 实时性强,因为实时访问数据库 | 实时性弱,一次性将数据读取到内存,数据如果发生改变,无法将最新数据应用于操作 |
适用 | 数据量大,更新频繁 | 数据量小,相对稳定 |
二、Mysql中的limit
1、语法
limit X,Y:跳过前X条数据,读取Y条数据
X:表示第一个返回记录行的偏移量,如果X=0,即 limit 0, Y,相当于limit Y
Y:表示返回记录行的最大数目
2、查询前N条数据
SELECT * FROM action LIMIT 2;-- 相当于以下sqlSELECT * FROM action LIMIT 0,2;
3、跳过前X条数据,查询Y条数据
假设:跳过前2条数据,查询3条数据,也就是X=2,Y=3
SELECT * from action LIMIT 2,3;
4、分页
假设:每页20条数据
-- -- 第1页SELECT * from action LIMIT 0,20;-- 第2页SELECT * from action LIMIT 20,20;-- 第3页SELECT * from action LIMIT 40,20;-- 第4页SELECT * from action LIMIT 60,20;-- n页SELECT * from action LIMIT (n-1)*20,20;
5、性能
待补充O(∩_∩)O~~
三、Java中的limit 和 skip
前提:一次性将数据读取到内存中,用List存储
1、语法
skip(X):表示跳过前X条数据
limit(Y):表示查询Y条数据
2、查询前N条数据
假设:当前有10条数据,查询前5条数据,也就是limit(5)
import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class Test { public static void main(String[] args) { testLimit(); } public static void testLimit() { Listlist = Arrays.asList(1,2,3,4,5,6,7,8,9,10); List newList = list.stream().limit(5).collect(Collectors.toList()); System.out.println(newList.toString()); }}
3、跳过前X条数据,查询Y条数据
假设:当前有10条数据,跳过前5条,查询3条数据,也就是skip(5),limit(3)
import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class Test { public static void main(String[] args) { testSkipAndLimit(); } public static void testSkipAndLimit() { Listlist = Arrays.asList(1,2,3,4,5,6,7,8,9,10); List newList = list.stream().skip(5).limit(3).collect(Collectors.toList()); System.out.println(newList.toString()); }}
4、分页
假设:当前有10条数据,每页3条数据,从第0条数据开始,也就是skip(pageNum*pageSize),limit(pageSize)
import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class Test { public static void main(String[] args) { testPage(); } public static void testPage() { Listlist = Arrays.asList(1,2,3,4,5,6,7,8,9,10); int pageSize = 3; int pageNumMax = list.size() % pageSize == 0 ? list.size() / pageSize : list.size() / pageSize + 1; //从第0页开始,相当于第1页 for (int i = 0; i < pageNumMax; i++) { List newList = list.stream().skip(i*pageSize).limit(pageSize).collect(Collectors.toList()); System.out.println("从第0页开始:"+newList.toString()); } System.out.println(); //从第1页开始,更符合人们的思维习惯 for (int i = 1; i <= pageNumMax; i++) { List newList = list.stream().skip((i-1)*pageSize).limit(pageSize).collect(Collectors.toList()); System.out.println("从第1页开始:"+newList.toString()); } }}
转载地址:https://blog.csdn.net/weixin_43453386/article/details/102476747 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月11日 18时04分23秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
用IOT的思维来管理我们的查看我们重要业务的服务器健康状态-将IOT设备注册到设备中心!
2019-04-26
Java中九大内置对象(面试必问)
2019-04-26
Java集合框架详解(详细讲解,面试必备)
2019-04-26
面向对象三大基本特性,五大基本原则(面试必问)
2019-04-26
低学历学Java合适吗?
2019-04-26
学完java,准备面试,简历上没啥写的怎么办?
2019-04-26
java初级程序员简历上不能写,但是不能不会的项目!
2019-04-26
自学java的建议
2019-04-26
java练手小项目及框架教程
2019-04-26
仿天猫实战项目开发笔记---第一天
2019-04-26
仿天猫实战项目开发笔记---第二天(数据库创建)
2019-04-26
如何自学java拿到高工资?
2019-04-26
初学java,程序总是报错怎么办?
2019-04-26
Win10 上如何安装 Linux虚拟机VMWare(可以直接下载)
2019-04-26
java零基础教学------操作符
2019-04-26
java零基础教学------控制流程(if,if else,while....)
2019-04-26
初级程序员必须会的项目
2019-04-26
史上最全的Linux操作命令(非常全!!!)
2019-04-26
这些常用的java工具类你都知道吗?
2019-04-26