首頁  >  問答  >  主體

mysql - 分库后如果显示各分库下合并的数据

B2C电商,假如有用户表,订单表,商品表,针对用户ID,进行hash后,分库,假设分为A,B,C,D四个库,相应的不同用户下的订单也存放在对应的A,B,C,D库里,商品表做冗余存放在所有库里,
那如果要在后台订单里看到所有的订单,这时候要怎么处理,把A,B,C,D的订单合并起来再排序?这套规则有组件可以实现吗?还是要自己写代码?

PHP中文网PHP中文网2742 天前657

全部回覆(3)我來回復

  • 高洛峰

    高洛峰2017-04-17 14:51:14

    訂單表結構是一樣的,建議在資料庫層去處理,sql語句union聯合查詢,然後進行order by,limit處理,程式端直接拿到處理後的資料;程式碼解決會吃記憶體

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:51:14

    分庫分錶本身就是一把雙面刃,如果單量在10玩,百萬級,不建議現在就分。
    對於你說的這個查詢條件,如果需求還蠻大,查詢時候也蠻多的話,我建議單獨搭建一個庫,將之前分庫的資料再匯總過來(只匯總有查詢需要的),自己讀bin log,寫ETL就行,這樣除了解決你的需求外還有個好處就是分析統計很方便。
    或直接用阿里的開源中間件,將資料庫和業務程序隔離開也行

    回覆
    0
  • PHPz

    PHPz2017-04-17 14:51:14

    你這個以使用者維度分庫分錶的,如果要實作查詢,需要再以訂單維度再進行分庫分錶,所以會資料冗餘

    回覆
    0
  • 取消回覆