mysql分库之后如何分页查询

mysql分库之后如何分页查询

前言:

当我们的应用在经历时间的洗礼之后,mysql数据库势必会遇到数据量过大,需要分表分库,当然,我们应该一开始就进行这个操作!!

切入正题

按时间水表无限分表

例如:订单表我们对他进行水平分表,一时间对位订单号的头部 如:20210101112233321654,其中20210101112233部分为当前时间精确到秒,321654是我们的随机数,构造出的订单号作为分表标志,然后我们假设,一个月一张表,那么上述的订单号应该在 order_202101这张表中,当我们需要取出这条记录的时候,我们只要在代码中分析这个订单号的时间部分,就可以定位到表所在。当然这样的表,在库中有很多 10张20张更多!!

问题浮现

现在有个问题,如果我们的管理后台要按条件查询订单,而且!!!领导说了,你还必须有分页!!!!!!!!!怎么办?

哎!!这么无礼的要求满足他吧!

单表分页的时候,我们使用limit设置步长和起始位置 limit(offset,start)
可是现在有20张表,怎么办?

1,首先我们应该按照条件查询出20张表所有的记录条数,一张一张的查询(如果有时间作为条件就好了!-,-),然后全部相加就是总记录数。

2,有了总记录数,就有了总页数,然后,根据传过来的page,又因为我们知道每张表的记录数,所以我们可以精确的确定对应的offset数量的记录都在那几张表中,如:page=5,offset=10, 如果第一张表的记录数是32,第二章的记录数是40,那么我们只需要查询第二张表就可以实现,10*(5-1)=40,start= 40-32=8 所以,第五页的记录数应该是 select from table2 limit(offset,8),这样,我们就可以查询出所有page=5的数据了。

3,20张表!!!!!每次都查询每张表的记录数,数据库要死的!!!!!!那怎么办类?首先,我们知道最新的表是动态的,但是之前的月份或者日期是静态的不会在增加新的,所以可以将最新以外的表的对应条件记录数进行redis(nosql)进行缓存,这样 我们只有在第一次进行查询的时候查询所有表的记录数,其他的时间下,我们只需要在需要显示的表中进行查询就可以了。

ps:如果10条记录在两张不同的表中,使用递归进行查询就可以了,知道满足我们的条件为止!!!!!!当然了,即使经过了2年,有了分库,也可以用相同的原理进行查询。

好了,下次聊聊分表的下拉加载!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 毕业设计 基于springboot知识图谱(Neo4j)的科技政策管理系统源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于springboot知识图谱(Neo4j)的科技政策管理系统源码+详细文档+全部数据资料(高分项目) 基础系统模块 系统功能模块组成如下所示: ``` ├─系统管理 │ ├─用户管理 │ ├─角色管理 │ ├─菜单管理 │ └─部门管理 ├─系统监控 │ ├─在线用户 │ ├─系统日志 │ ├─登录日志 │ ├─Redis监控 │ ├─Redis终端 │ ├─请求追踪 │ ├─系统信息 │ │ ├─JVM信息 │ │ ├─TOMCAT信息 │ │ └─服务器信息 ├─任务调度 │ ├─定时任务 │ └─调度日志 ├─代码生成 │ ├─生成配置 │ ├─代码生成 └─其他模块 ├─FEBS组件 │ ├─表单组件 │ ├─表单组合 │ ├─FEBS工具 │ ├─系统图标 │ └─其他组件 ├─APEX图表 ├─高德地图 └─导入导出 ``` 系统特点 **项目描述**:系统提供了完善的科技政策管理体系。通过参考现有的文本自动分类算法,使其能够完成科技政策的自动分类。提取科技政策的各种信息,完成多种条件相结合的检索方法。使用新词发现算法建立了科技政策的词典,同时配合文本分析算法,在一定程度上完成了科技政策之间的对比。采集大量科技政策建立有关科技政策的知识库,构成知识图谱,让政策与政策之间形成一定的关联。参考国务院发布的主题词表,确认了科技政策表达的主体内容。 **技术概述**:系统采用SpringBoot框架搭建,使用Shiro进行用户权限管理,实现单点登录,提高系统安全性。Redis统一缓存处理,提高系统性能和用户满意度,Hanlp文本处理并构建科技政策知识图谱网络图。 系统架构分为四个层次,分别为用户访问层、业务应用层、服务支撑层和数据存储层。用户层按用户的权限将用户分为三类,三类用户能够使用本系统的不同的功能。业务应用层主要包括科技政策查询,其中有政策文件查询、科技政策分类总览、科技政策知识图谱展示。科技政策分析中包括科技政策对比、演化和主题词分析以及智能问答,政策文件管理主要是政策类别管理。服务支撑层是该系统用到的主要方法,用来对数据进行加工。服务支撑层包括:文本自动分类、提取科技政策文本关键词、新词发现技术、知识图谱。数据存储层为系统提供数据,主要是保存科技政策文件的Mysql数据库和保存知识图谱的Neo4j数据库。 1、科技政策文件管理 # (1)科技政策查询 功能:用户根据自己的需要对科技政策进行检索和查看 输入数据:选择发布时间范围(可选),政策名称(可选),关键词(可选),发布单位(可选),全文检索(可选)。 输出结果:根据用户选择的查询条件,输入的政策名称,选择的时间范围,政策的发布机构,科技政策包含的关键词或包含的内容,在表格中以分页的形式进行展示,展示顺序按照发布时间倒序排序,在表格中显示的内容包括政策名称,政策发布日期和政策发布机构。 使用场景:用户知道某篇科技政策的具体或大概的名称,按照政策名称进行具体或模糊查询。想要寻找具体部门发布的科技政策,可以选择发布单位,按照单位条件进行内容检索。寻找包含某个关键词的科技政策可以按照关键词条件查找。 解决方案:通过用户点击查询按钮来获取用户的输入,将获取的输入传入到后台的控制类中,将获取的数据进行整理后传递给MyBatis-plus中相应的mapper,动态的创建SQL语句,之后使用MyBatis-plus的分页查询查件,到数据库中进行查询,将查询的数据转换成json格式,传递给Layui的table元素,解析json数据后以表格进行展示。 【备注】 1、该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过mac/window10/11测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值