物理分页和逻辑分页

1、物理分页逻辑分页区别

物理分页和“逻辑分页”是两种不同分页方式

物理分页是在数据库查询时,通过使用  LIMIT  和  OFFSET  等关键字,直接在“数据库层面”进行分页。它会将查询结果集限制在指定范围内只返回满足条件的数据行。物理分页,对数据库性能求较高,因为它需要在每次查询时都进行全表扫描,并且在返回结果前要进行排序操作。

逻辑分页是在“应用程序层面”进行分页,通过查询所有满足条件的数据,并在应用程序中进行分页计算处理。它会将查询结果全部返回,然后根据页码每页显示的数量从中提取出当前页需要的数据。逻辑分页,对数据库性能要求较低,因为它只需要一次查询,然后在应用程序中进行分页处理。

总的来说,物理分页适合处理大量数据的情况,可以减少网络传输应用程序内存消耗,但对数据库性能要求较高逻辑分页适合处理数据量较小的情况,可以灵活进行分页数据处理,但需要考虑内存消耗网络传输的影响。选择使用哪种分页方式,需要根据具体的业务需求系统性能进行权衡

2物理分页实现方式

物理分页实现方式通常是通过:数据库特定语法来实现,不同的数据库可能有不同的语法和实现方式。下面以常见的 MySQL 数据库为例,介绍一种实现物理分页的方式:

MySQL 使用  LIMIT  和  OFFSET  关键字来进行物理分页。 LIMIT  用于指定每页显示数量OFFSET  用于指定起始位置偏移量)。

例如,要查询第 3 页,每页显示 10 条数据,可以使用如下 SQL 语句:

SELECT * FROM table_name LIMIT 10 OFFSET 20;

这将从  table_name  表中跳过前 20 条数据,然后返回接下来的 10 条数据,即第 3 页的数据。

在实际应用中,可以根据用户传入的页码和每页显示的数量,计算出相应的偏移量,然后将其带入 SQL 语句中进行查询。在 MyBatis-Plus 中,可以使用  com.baomidou.mybatisplus.extension.plugins.pagination.Page  类来方便地进行物理分页查询。

需要注意的是,物理分页是在数据库层面进行的,每次查询都会执行全表扫描,并且需要进行排序操作。对于大数据量的表物理分页可能会影响查询性能,因此在实际应用中需要综合考虑数据库的性能和业务需求来选择合适的分页方式。

3逻辑分页实现方式

逻辑分页实现方式是:在应用“程序层面”进行分页计算处理。以下是一种常见的逻辑分页实现方式:

1. 查询所有符合条件的数据。

2. 获取总记录数。

3. 根据页码和每页显示的数量计算出起始索引和结束索引。

4. 从查询结果中提取起始索引到结束索引之间的数据,作为当前页的数据。

下面是一个示例代码,演示如何在 Java 中实现逻辑分页:

// 假设从数据库中查询出的所有数据存储在一个 List 中

List<Data> dataList = dataDao.getAllData();

// 获取总记录数

int totalRecords = dataList.size();

// 设置页码和每页显示的数量

int currentPage = 3;

int pageSize = 10;

// 计算起始索引和结束索引

int startIndex = (currentPage - 1) * pageSize;

int endIndex = Math.min(startIndex + pageSize, totalRecords);

// 提取起始索引到结束索引之间的数据,作为当前页的数据

List<Data> currentPageData = dataList.subList(startIndex, endIndex);

在上述示例中,我们首先查询出所有符合条件的数据,并获取总记录数。然后根据页码和每页显示的数量计算出起始索引和结束索引。最后,使用  subList  方法从查询结果中提取出当前页的数据。

逻辑分页不需要在数据库层面进行额外的查询和排序操作,因此对数据库性能要求较低。然而,需要注意的是,逻辑分页需要将所有符合条件的数据加载到内存中,对于大数据量的表可能会占用较多的内存空。因此,在实际应用中,需要根据业务需求和系统性能来选择合适的分页方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值