最近在做一个功能,供货商给他的客户去绑定货品。用一张表去存储客户绑货这个关系,用到了两个字段customer_id, goods_id, 如果一个客户绑定了 500 个货品,就会产生 500 条记录。这样到了 1000 个供货商的时候,如果每个供货商又有 500 个客户,每个客户绑定 500 个货品,那么就会产生 1000 * 500 * 500 = 250,000,000(2.5 亿) 条记录,这种情况下是不是应该把 goods_id 序列化成一个数组字段会更好?
customer_id, goods_id
这种不会造成多大的影响吧,都是 ID,数据存储量也不会大,查询也不会耗时太严重 按照你的方式,某天加个需要:查某个商品绑定的客户,岂不是疯掉了
确实也有这个需求,查商品绑定的客户
这不就是普通的的多对多关联嘛 等你有 1000 个供货商再去考虑优化吧 空谈意义不大
这个倒也是,做功能的时候,发现了这么个问题,一个供货商的绑货功能,做数据导入的时候,帮他把所有门店都绑上货,一下子就弄出来了 600 * 700 = 42 万条数据,顿时对设计的这个表有所怀疑,都不确定这么弄对不对了
这个不存在优化问题,表结构已经很简洁了,也许可以考虑如何缓存供货关系,不要一直查 DB。等数据量大到一定程度,你应该会选择按照 [供货商 ID] 分库分表了。