一、从概念上说
逻辑分页:逻辑分页依赖于代码。(例:Mybatis自带的分页插件就是逻辑分页)
同时逻辑分页是先查询出所有的数据,再根据代码块的所需(例:你需要拿到第几页,每页几条的数据)筛选出合适的数据进行分页。
物理分页:物理分页依赖于数据库。(更侧重于sql语句)
例:MySQL数据库提供的分页关键字"limit",程序员只需要编写带有关键字的SQL语句,数据库返回的数据就是分页结果。
简单点讲:
逻辑分页就是半自动化的一个分页步骤(因为需要传递相关参数,所以是半自动化的);
物理分页就是手写SQL语句实现的分页。
二、两者对比来说
1.数据库方面
物理分页是手写SQL语句,故每一次分页都需要访问数据库;逻辑分页是将全部数据查询出来后再进行的分页,只需访问一次数据库。所以说,物理分页对于数据库造成的负担大。
2.服务器方面
逻辑分页一次性将所有的数据读取至内存中,占用了较大的内存空间;物理分页每次只读取所需的数据,占用内存比较小。
3.实时性
逻辑分页一次性将数据全部查询出来,如果数据库中的数据发生了改变,逻辑分页就不能够获取最新数据(不能自动更新数据),可能导致脏数据的出现,实时性较低
物理分页每一次分页都需要从数据库中进行查询,这样能够获取数据库中数据的最新状态,实时性较高。