rainex
2017-10-01 15:55:49 +08:00
看了下,楼上还没人说到点子上,我说两句。
第一种方法是初学者就会用的方式,后续数据库维护也简单。
第二种其实思路是对的,因为接下来你还要根据需要作为查询条件去取那些商品数据的,你需要快速一步到位的得到 id 逗号分隔这种数据,但因为逗号分隔的数据内容可能很大,有可能空也可能买的太多导致 varchar(3000)都不够用,就不能用定长字段,所以数据量大了查询会慢,而且后续维护起来麻烦。
所以,如果不想找太多麻烦就用第一种,如果想优化设计,可以用第二种的思路,只拿第一种做原始数据,但查询的 id 逗号分隔数据用 nosql 或文件目录结构来存放“缓存”,需要更新维护时先修改原始数据,然后更新“缓存”,也称不上楼上有人说的灾难,想运行快就要付出代价。
有个设计原则,就是别什么烂活都交给关系型数据库,这种数据库是种代价高昂的数据存储方案,相对而言速度也不是很快。
另外每一部分用什么方案,跟服务器的假设和配置方案也有关系,比如 cpu 和内存还有磁盘的方案等等,不过现在因为硬件越来越强,人工成本反而高,所以。。。现在搞技术的其实越来越幸福越来越容易了