分表、分区、分页

分表可以细分为水平切分和垂直切分

  水平切分通俗的理解就是横着切,目的就是控制行数不要太大;

  垂直切分通俗的理解就是竖着切,目的是将常用字段和不常用字段分开存储;

 

分区通俗的理解就是将原本连续存储的改为不连续存储;这样就不需要全盘扫描,只需要针对某一段数据,从而查询范围变小,加快了查询效率。

 

 

分页通俗的理解就是在浏览页面时点击的下一页;

  分页也分为两种情况:真分页和假分页

  真分页:每次翻页时进行数据查询;特点是与数据库交互次数多,每次查询的数据量较少,数据不需要一直保存在内存中,能保证数据实时同步;

  假分页:一次性查询出所有数据;特点是无法保证数据实时同步,为了解决这个问题,可以引进缓存层来解决;

 

  代码实现方式:

// 第一个参数表示偏移量;第二个参数表示取出的条数;
// 当指定一个参数时,默认省略了偏移量,即偏移量为0;

/* 查询前5条数据 */
SELECT * FROM Student LIMIT 5;
/* 查询第1-10条数据 */
SELECT * FROM Student LIMIT 0,10;
/* 查询第11-20条数据 */
SELECT * FROM Student LIMIT 10 OFFSET 10;
/* 获得数据总条数 */
SELECT COUNT(*) FROM Student;
/* 总页数;假设每页显示10条,则直接进行除法运算,然后向上取整 */
SELECT CEIL(COUNT(*) / 10) AS pageTotal FROM Student;

 

在实际操作中,我们能够得到的信息有当前所在页以及每页的数据量,同时要注意一下是否超出了最大页数。以每页10条为例,则前三页的数据应为:

  • 第1页:第1~10条,SQL写法:LIMIT 0,10
  • 第2页:第11~20条,SQL写法:LIMIT 10,10
  • 第3页:第21~30条,SQL写法:LIMIT 20,10

据此我们可以总结出,LIMIT所需要的两个参数计算公式如下(当前页:pageNumber; 每页数据量:pageSize):

  • offset:(pageNumber - 1) * pageSize
  • rows:pageSize

 

参考链接:

https://cloud.tencent.com/developer/article/1644902

posted @ 2023-03-07 10:19  先娶国王后取经  阅读(93)  评论(0编辑  收藏  举报