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() {
List
list = 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() {
List
list = 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() {
List
list = 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:SpringBoot——》Thymeleaf
下一篇:解决——》Cannot get a STRING value from a NUMERIC cell poi

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月11日 18时04分23秒