数据水平分表之后如何写查询语句

新手一枚,第一次接触水平分表, 有几个问题想请教一下
现有一张订单表, 想要做按季度做水平分表操作

1.如果遇到订单表记录的检索,比如分页, 如何知道一共需要分多少页, 是需要查找所有季度的订单表吗?
2.搜索订单, 是需要在所有订单表执行一遍搜索的 sql 吗?(现在用的是 es,只是想考虑下MySQL 遇到这种场景该怎么写查询语句)

  1. 获取自己最近的 30 条订单记录, 如果最近的季度只查找到了 20 条,那么是不是需要去上个季度查找 10 条拼接起来?如果上个季度也不够 10 条, 则找上上个季度, 那是否需要一个递归的查询

水平分表之后感觉订单这块的增删改查大部分要重写,有没有对业务改动比较小的方案,用的框架是laravel

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8

弄个mysql代理,会不会简单点?

4年前 评论
  1. 需要一张汇总表,数据按年度存放,筛选数据的时候只能按年查询。
  2. 搜索订单,不是复杂的搜索肯定需要连表查询,所以es依然是最好的方案。
  3. 最近的订单一般不会是按条数来显示的,一般是按时间,比如三个月、半年,参考京东、天猫。所以分表维度按这个就好,不需要去联合查询。 Ps: 当然还有其他更好的做法,这只是我之前使用的方式。
4年前 评论
zhanghaidi 4年前
GitPush (作者) 4年前

请问解决了吗 遇到同样的问题

4年前 评论

其实可以和产品沟通,不要那么死板,他说什么就是什么。技术方案也要和产品说清楚,例如你分页的那个问题。

4年前 评论

@一颗糖 暂时还没有
感谢评论区的各位大神的帮助
我把社区得到的答案都反馈了 用mysql 代理软件, 被运维驳回了, 具体原因我听得不是很懂, 反正就是不让用。
后续又和产品商量更改页面的展示, 以应对分表后数据查询, 产品说需要讨论。 so, 我已经去开发另一个功能了

但是我觉得将 @GitPush @PHPdoctor 合起来应该就是现在能做到的答案了
订单页面筛选功能应该重新规划, 至少要和分表后的逻辑不冲突, 目前期望产品能改原型 :D

4年前 评论

个人观点

1,让产品配合 按季度筛选, 产品实在不配合 可以按 3 的思路

2,同上一点

3,可以考虑 维护一个 用户最近30个订单的表。 每次直接查这个表拿数据id。 如果数据过大的话可以再分

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!