[請益] 需求接近複製整個資料表..

作者: altecjc (嘉誠)   2018-06-06 23:36:47
大家好,這邊有個問題,最近想不出什麼關鍵字搜尋,上來請教大神建議
本來想在 database 版上問,但我想不確定是純粹資料庫解法或者...
正題開始:
產品資料表 (products)
product_id | active (上架) | is_hot (熱門) | ...
使用者產品表 (user_products)
id | user_id | product_id | active | is_hot | ...
產品資料表,有上架/熱門的設定,是針對主站的顯示,然而個別使用者
可以針對自己子站,是否顯示/熱門設定,產品內容等都不需使用者修改
目前想不出什麼方法,總不能新增一個使用者,就把幾千筆資料撈出
一筆一筆的 insert into 到 user_products 這樣子感覺不是正解
(不要跟我說可以一次大量 insert (insert into (), (), ()...,因為
這招還是有極限,要開很大,而且我希望管理者新增使用者不要等太久..)
跪求關鍵字,或是給我一個方向
感謝大大
作者: liisi (小心一點)   2018-06-06 23:43:00
不懂意思 你是說新增一個使用者 就把所有商品表灌進去?如果是這樣 用 insert select就好..
作者: lhsieh (不要問)   2018-06-07 04:17:00
個人會只用一個商品表,is_hot跟active你原本可能用bit,我會用包含用到的所有user_id組成的長字串看習慣是用特定符號接或每個user_id用兩符號夾,後者可以直接like查詢跟PHP有關就設定變動時欄位內容字串處理的部份主站也給個id
作者: MOONRAKER (㊣牛鶴鰻毛人)   2018-06-07 11:01:00
你是做開店系統吧 會每秒有10個人要開店嗎
作者: altecjc (嘉誠)   2018-06-07 14:47:00
不會每10秒開站,但是商品有1000筆以上的話就變成一個user要 insert 這麼多筆到 user_products對,就是開站系統這樣的insert select 是複製一張表,但我不是要複製新表
作者: fevoath0924 (be myself)   2018-06-07 19:37:00
寫stored procedure跑
作者: MOONRAKER (㊣牛鶴鰻毛人)   2018-06-07 21:59:00
不是我不是問每10秒開站 是每秒開10個站如果只是你整理出來這五個欄位 那一千份也沒啥好緊張沒有這些你連對應都沒有
作者: kroutony (bingbing)   2018-06-08 00:00:00
這資料表設計沒有問題嗎?為什麼不是有active或is_hot的再進去預設全部進去跟全部都沒進去意思是一樣的
作者: altecjc (嘉誠)   2018-06-08 00:21:00
其實這整個流程是 user 會自己去選擇商品,才執行 insertuser_products 沒錯,但基本上使用者會使用全部商品上架,再去調整 is_hot
作者: liisi (小心一點)   2018-06-08 23:40:00
如果是上述這樣 根本就不需要insert全部 = =商品檔本身 就等於是所有user通用對唷 還有上架的部分 算了 你還是用insert select 好了insert select 可以選擇要需要的欄位 又不是複製新表
作者: jaywang4 (酒中狂士)   2018-06-09 21:59:00
我是覺得原po的需求沒有講得很清楚,但會搞成這樣應該先檢討資料庫設計
作者: xdraculax (首席怪叔叔)   2018-06-13 07:19:00
建個只有 user_id, product_id, status enum(disabled,hot) 的表就夠用了,只寫入公表顯示但 user 關閉或熱門的寫入方式用單筆 ajax 或批次 insert select 都可以

Links booklink

Contact Us: admin [ a t ] ucptt.com