[请益] 需求接近复制整个资料表..

楼主: 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