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

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

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

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

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 8

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

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

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

3年前 评论

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

3年前 评论

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

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

3年前 评论

个人观点

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

2,同上一点

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

1年前 评论

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