Oracle、Mysql 分页查询


1.情景展示

在实际开发过程中,分页查询是最常使用的,只要存在表格查询,就会存在分页查询;

分页的好处在于:减少查询的数据量,不会给前端、后台服务器、数据库造成压力,减少用户等待时间。

2.Oracle分页

如果仅仅是SQL,不涉及前后端交互的话,最简单的分页查询就是:

显然,这种查询,对于我们来说,基本上没有意义,它往往蕴含着前后端交互:

由前端来决定要分页大小PageSize,分页的当前页PageIndex;

后台根据PageIndex和PageSize计算出开始页Start和结束页End。

前端:传当前页数和每页的大小

java:计算起始数和结束数

其核心点在于:

int start = (pageIndex - 1) * pageSize + 1;
int end = pageIndex * pageSize;

ibatis:

其核心点在于:

动态分页,即:当参数start和end有值时,才进行分页,没值时,查询的是所有数据。

3.Mysql分页

最简单查询:

前端同上;

java:计算起始数和结束数;

其核心点在于:

int start = (pageIndex - 1) * pageSize;
int end = pageIndex * pageSize;

ibatis:

其核心点在于:

动态分页,即:当参数start和end有值时,才进行分页,没值时,查询的是所有数据。

4.小结

Mysql和Oracle分页的区别在于:

Mysql使用limit分页,Oracle使用rownum分页;

Mysql的limit1,2相当于:1

Oracle分页是:1≤rownum≤2,得到的是第一行和第二行的记录,也就是前两行数据。

所以,这才是造成Mysql起始数从0开始,Oracle从1开始的真正原因。

其实Oracle也可以用int start = (pageIndex - 1) * pageSize;

不过,ibatis里面不能再用≥start,而是使用>start即可。

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

  • 个人主页