作者altecjc (嘉誠)
看板PHP
標題[請益] 需求接近複製整個資料表..
時間Wed Jun 6 23:36:47 2018
大家好,這邊有個問題,最近想不出什麼關鍵字搜尋,上來請教大神建議
本來想在 database 版上問,但我想不確定是純粹資料庫解法或者...
正題開始:
產品資料表 (products)
product_id | active (上架) | is_hot (熱門) | ...
使用者產品表 (user_products)
id | user_id | product_id | active | is_hot | ...
產品資料表,有上架/熱門的設定,是針對主站的顯示,然而個別使用者
可以針對自己子站,是否顯示/熱門設定,產品內容等都不需使用者修改
目前想不出什麼方法,總不能新增一個使用者,就把幾千筆資料撈出
一筆一筆的 insert into 到 user_products 這樣子感覺不是正解
(不要跟我說可以一次大量 insert (insert into (), (), ()...,因為
這招還是有極限,要開很大,而且我希望管理者新增使用者不要等太久..)
跪求關鍵字,或是給我一個方向
感謝大大
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.118.219.193
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1528299413.A.EB1.html
※ 編輯: altecjc (122.118.219.193), 06/06/2018 23:38:19
1F:推 liisi: 不懂意思 你是說新增一個使用者 就把所有商品表灌進去? 06/06 23:43
2F:→ liisi: 如果是這樣 用 insert select就好.. 06/06 23:45
3F:推 lhsieh: 個人會只用一個商品表,is_hot跟active你原本可能用bit,我 06/07 04:17
4F:→ lhsieh: 會用包含用到的所有user_id組成的長字串 06/07 04:17
5F:推 lhsieh: 看習慣是用特定符號接或每個user_id用兩符號夾,後者可以直 06/07 04:23
6F:→ lhsieh: 接like查詢 06/07 04:23
7F:→ lhsieh: 跟PHP有關就設定變動時欄位內容字串處理的部份 06/07 04:26
8F:→ lhsieh: 主站也給個id 06/07 04:28
9F:→ MOONRAKER: 你是做開店系統吧 會每秒有10個人要開店嗎 06/07 11:01
10F:→ altecjc: 不會每10秒開站,但是商品有1000筆以上的話就變成一個use 06/07 14:47
11F:→ altecjc: r要 insert 這麼多筆到 user_products 06/07 14:47
12F:→ altecjc: 對,就是開站系統這樣的 06/07 14:48
13F:→ altecjc: insert select 是複製一張表,但我不是要複製新表 06/07 14:49
14F:→ fevoath0924: 寫stored procedure跑 06/07 19:37
15F:→ MOONRAKER: 不是我不是問每10秒開站 是每秒開10個站 06/07 21:59
16F:→ MOONRAKER: 如果只是你整理出來這五個欄位 那一千份也沒啥好緊張 06/07 22:00
17F:→ MOONRAKER: 沒有這些你連對應都沒有 06/07 22:01
18F:→ kroutony: 這資料表設計沒有問題嗎? 06/08 00:00
19F:→ kroutony: 為什麼不是有active或is_hot的再進去 06/08 00:02
20F:→ kroutony: 預設全部進去跟全部都沒進去意思是一樣的 06/08 00:02
21F:→ altecjc: 其實這整個流程是 user 會自己去選擇商品,才執行 insert 06/08 00:21
22F:→ altecjc: user_products 沒錯,但基本上使用者會使用全部商品上架 06/08 00:21
23F:→ altecjc: ,再去調整 is_hot 06/08 00:21
24F:推 liisi: 如果是上述這樣 根本就不需要insert全部 = = 06/08 23:40
25F:→ liisi: 商品檔本身 就等於是所有user通用 06/08 23:40
26F:推 liisi: 對唷 還有上架的部分 算了 你還是用insert select 好了 06/08 23:45
27F:→ liisi: insert select 可以選擇要需要的欄位 又不是複製新表 06/08 23:46
28F:推 jaywang4: 我是覺得原po的需求沒有講得很清楚,但會搞成這樣應該先 06/09 21:59
29F:→ jaywang4: 檢討資料庫設計 06/09 21:59
30F:→ xdraculax: 建個只有 user_id, product_id, status enum(disabled, 06/13 07:19
31F:→ xdraculax: hot) 的表就夠用了,只寫入公表顯示但 user 關閉或熱 06/13 07:19
32F:→ xdraculax: 門的 06/13 07:19
33F:→ xdraculax: 寫入方式用單筆 ajax 或批次 insert select 都可以 06/13 07:20