我有如下问题:一个用户购买商品记录表,字段如下:UserID, GoodsID, GoodsCount如果一个用户一次购买了多个商品,要把用户的购买行为记录到表中。
我是把 GoodsID, GoodsCount 分别都做成了用逗号分隔的字符串传入到存储过程中(GoodsID 与 GoodsCount是一一对应的)。在存储过程中再把GoodsID, GoodsCount 用逗号循环分割,循环的同时插入到上面的表字段中。不知道是否说明白了?这样是否比较浪费数据库的性能,因为用户购买了20种商品就要20 次插入数据,如果用户并发量很大性能肯定不是很好,有其他的处理方法吗?或者是否有更好的表结构?感谢指教!
我是把 GoodsID, GoodsCount 分别都做成了用逗号分隔的字符串传入到存储过程中(GoodsID 与 GoodsCount是一一对应的)。在存储过程中再把GoodsID, GoodsCount 用逗号循环分割,循环的同时插入到上面的表字段中。不知道是否说明白了?这样是否比较浪费数据库的性能,因为用户购买了20种商品就要20 次插入数据,如果用户并发量很大性能肯定不是很好,有其他的处理方法吗?或者是否有更好的表结构?感谢指教!
1 1 1 1
1 2 2 1
1 3 3 1
1 1 1 2
1 2 2 2
1 3 3 2
....
2 1 2 3
...
...
n n n n
这样的表结构,主键增加如2楼老大的“购买单号”就可以区分了。
还有一点也不明白:插入购买数据到数据库,直接插入好了,为什么要经存储过程折腾一下再插入数据库呢?建好了如2楼的表结构,直接插入就OK了,类似:
INSERT INTO 表(UserID,GoodsID,GoodsCount,GoodsNo)
SELECT UserIDValue,GoodsIDValue,GoodsCountValue,GoodsNoValue
比如 A 书买了5本,B书买了3本,C书N书买了 2本假如有这样一个行为,那就是说用户买了N种书就要在存储过程中有 N 次写入数据的语句,这个写入有没有更节省效率的办法呢?