数据库建表疑问,是否要用复合主键?

发布于 2022-09-06 05:50:39 字数 603 浏览 9 评论 0

我需要建一张表:

OrderId*  UserId  OrderDate  Total
1          1      2017-1-1  100
2          1      2017-1-1  120
3          9      2017-1-1  20
4          12     2017-1-1  88

一般情况下我们就用OrderId作为主键,查询的时候也是where UserId='x'作为条件查询的。

但是我想知道是否有必要建立这样的结构:

UserId* OrderId*  OrderDate  Total
1          1      2017-1-1  100
1          2      2017-1-1  120
9          3      2017-1-1  20
12         4      2017-1-1  88

同时把UserId和OrderId作为复合主键,当用户1在更新的数据的时候,用户9来查询时能够立即返回结果,而不用等1锁表结束?

是否这样设计在多用户需求的场景下可以划分数据的操作细粒度?

求大神来帮忙,小的感谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

相权↑美人 2022-09-13 05:50:39

沉下去了呢,没有人搞这个吗?这里难道都是JS专区?

被你宠の有点坏 2022-09-13 05:50:39

毫无必要,根据主键更新数据只会锁定一行数据,而不是锁定整个表。

寄意 2022-09-13 05:50:39

不建议在数据库层面加锁,建议通过服务端的内存锁(锁主键)。当某个用户要修改某个id的数据时,把要修改的id存入memcache,若其他用户触发修改此id的数据时,读到memcache有这个id的值时,就阻止那个用户修改。原文详情

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文