鍍金池/ 問答/PHP  Python  數(shù)據(jù)庫  網(wǎng)絡(luò)安全/ 統(tǒng)計會員半年復(fù)購率的問題(7天、15天、30天)

統(tǒng)計會員半年復(fù)購率的問題(7天、15天、30天)

order 訂單表 字段 id order_no(訂單編號) business_id(商戶ID) user_id(會員ID)money(消費金額)
user 會員表 id name 會員名稱
business 商戶表 id name 商戶名稱

基數(shù):200個商戶 一個商戶可能有200個顧客
前提:會員購買過一次,第二次購買就算復(fù)購
問題:有什么好的設(shè)計方案和想法

目前我所想到的方法:
新建一張表,存商戶和會員的關(guān)系

re_business_user

business_id user_id number money date created_at
商戶ID 用戶ID 購買次數(shù) 購買金額 時間(2018-05-11) 創(chuàng)建時間

每天用戶在某個商戶購買商品時查詢一下關(guān)系表(re_business_user)數(shù)據(jù)是否存在(where 條件中加上date等于當(dāng)前的時間2018-05-11),不存在新增一天記錄,存在則更新購買次數(shù)+1和購買金額增加
這樣設(shè)計我就可以很快的計算出7天復(fù)購率,15天復(fù)購率,30天復(fù)購率

這樣設(shè)計會造成整張表數(shù)據(jù)量過大,一個月大概會有120W數(shù)據(jù)(20020030)

各位大佬有什么好的想法可以解決這個問題嗎?謝謝

回答
編輯回答
風(fēng)清揚

咳咳,先個人覺得 120w 并不大(習(xí)慣吐槽)。然后你既然是分段的,那不若直接建立索引就好了。當(dāng)然,如果說優(yōu)化,確實是建立新的一個表記錄會比較好些。
其實我個人理解,數(shù)據(jù)庫的使用就兩種情況,一種用空間換時間,另一種自然是用時間換空間。是我的話,個人會選擇只是優(yōu)化表的索引,然后再進行查詢就好,考慮到你做的復(fù)購率的調(diào)查頻率不會很高,用時間作為代價運作也是可以的。

2017年5月16日 04:10