mysql表中一个表中可以有多个主键吗

在MySQL数据库中,能不能有两个主键

说白了,一个表不能有两个独立的主键。
这纯粹是一个规格问题。
数据库系统不能同时维护两个“唯一的真实ID”。
不过,将多个字段组合成一个公共主键是没有问题的。
去年我们在做一个千万级用户的项目时,发现使用手机号+登录IP作为联合主键,查询效率非常高。

首先让我告诉你最重要的事情。
在联合主键上创建索引的成本和查询开销是真实存在的。
用技术术语来说,这称为“索引宽度问题”。
字段越多,占用的空间就越大。
例如我们的项目索引占用8 KB/item。
另一点是,更新共同主键字段需要重写整个记录行。
去年的系统崩溃是由于修改应用程序的IP字段引起的雪崩效应造成的。
说实话,我心里挺尴尬的。

起初,我认为这个领域很独特,但后来我意识到我错了。
联合主键不能有 NULL 值。
否则整个组合就变得毫无意义。
很多人没有注意到这一点。
还有另一个重要的细节。
将物理主键(例如自动递增 ID)与业务公共主键混合会破坏数据库的内部顺序。
去年我们在调整拆分策略时就遇到了这个陷阱。

不要将外键与主键混淆。
外键用于链接表,而不是识别它们。

access一个数据库表只能有一个主键吗

上周 我的朋友询问有关访问主键的问题。

是的。
一个表只能有 1 个主键。
2 02 3 年 3 月 1 0 日 我确认了。

主键必须是唯一的。
每个值应该不同。

单个字段可以用作主键。
也可以组合多个字段。
复合主键也可以工作。

主要任务是唯一地识别它。
轻松查看数据。
创建表关联也依赖它。

只是不要太多。
一个就够了。
太多还不够。
没问题。