訂單表是根據userid分錶還是orderid分錶
訂單表是根據userid分錶還是orderid分錶
1個user可以有多個訂單,依照訂單id分吧
uiserid和orderid是一對多的關係,所以,訂單表的主鍵是orderid,外鍵是userid
用orderid分錶的好處是可以做到每張表的大小差異不大,例如按照時間來分或order數量達到一個值就新建表,壞處是查詢的時候往往是以userid為檢索條件的,所以會出現非常多的union操作。
用userid的話情況就相反,表的大小無法恆定下來,會隨著時間不斷增長,但是好處是查詢都是單表,會很快。
所以個人觀點的話:如果是不用nosql來做快取的情況下,建議用userid分錶。如果追求效能可以用memcache來做緩存,這樣即使是用orderid分錶,由於第二次查詢的時候會直接讀取緩存,速度也會很快。對於經常查看訂單的用戶會很友好。
用orderid分錶
orderid 好存,資料庫負擔也比較一致。但是資料聚合比較難。
userid 好聚合。但是會有熱點分佈問題,造成資料表大小不一致。
自己抉擇