分表、分区、分页
分表可以细分为水平切分和垂直切分
水平切分通俗的理解就是横着切,目的就是控制行数不要太大;
垂直切分通俗的理解就是竖着切,目的是将常用字段和不常用字段分开存储;
分区通俗的理解就是将原本连续存储的改为不连续存储;这样就不需要全盘扫描,只需要针对某一段数据,从而查询范围变小,加快了查询效率。
分页通俗的理解就是在浏览页面时点击的下一页;
分页也分为两种情况:真分页和假分页
真分页:每次翻页时进行数据查询;特点是与数据库交互次数多,每次查询的数据量较少,数据不需要一直保存在内存中,能保证数据实时同步;
假分页:一次性查询出所有数据;特点是无法保证数据实时同步,为了解决这个问题,可以引进缓存层来解决;
代码实现方式:
// 第一个参数表示偏移量;第二个参数表示取出的条数;
// 当指定一个参数时,默认省略了偏移量,即偏移量为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
参考链接:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类