mysql为每个用户创建一张表_数据库,_数据库中为每个用户建立一张表是否更合适?,数据库 - phpStudy...

文章讨论了在购物网站记录用户浏览历史时,采用单表记录所有用户浏览历史与为每个用户单独创建表的两种方案。针对磁盘空间占用、查询和插入效率、并发处理能力等方面进行了比较。问题聚焦于哪种方案在大规模用户情况下更优,以及在特定场景下是否更适合使用文件存储。同时,提到了数据库设计原则和实际应用中的考虑因素。
摘要由CSDN通过智能技术生成

数据库中为每个用户建立一张表是否更合适?

场景如下:

购物网站想要记录每个用户的浏览历史,用户可以查询自己的浏览历史,浏览历史的长度为50。

把所有记录都记在一张表table_total的情况:

每条浏览记录的数据格式为:(user_id, item_id, time) 假设网站的用户人数为: 1,000,000,table_total的最大tupple数应该为:n=50*1,000,000。在user_id上建立索引。

某用户查询时的复杂度:select * from table_total where user_id = curent_user_id 有索引的情况下复杂度为:log(n)。

某用户插入时的复杂度:因为需要知道用户的浏览历史是否大于50,如果大于50了需要把最老的那条记录删除所以也需要先:select * from table_total where user_id = curent_user_id,再判断数据长度是否需要更新。复杂度为:log(n)

每个用户的记录单独存在一个表table_userid的情况:

在用户登录时就记录下用户的对应的userid,每个表中的attributes为:(item_id,time)依照time的值来排序,并且每个表的最大长度都为50。

某用户查询时的复杂度:select * from table_userid。复杂度为:<50

某用户插入时的复杂度:查看表的长度,等于50,删除表中最后一项,插入;小于50,直接插入。复杂度:<2</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值