mysql - 是否应该始终将主键添加到 innodb 表中?

标签 mysql database database-design indexing database-optimization

我有一些只有 2 个 int 列的 innoDbs,它们是其他表的主键的外键。

例如一个表是user_items,它有2列,userId,itemId,都是用户和项目表的外键,如果更新或删除则设置为级联。

我应该向此类表添加第 3 列并将其设为主键,还是就性能或任何其他优势而言,现在的方式更好?

最佳答案

仅仅为了添加一个 ID 列而添加第三个 ID 列是没有意义的。事实上,当您插入或删除行时,它只是增加了处理开销(索引维护)。

主键不一定是“ID 列”。

如果你只允许用户和项目之间的单一关联(一个用户不能被分配两次相同的项目)那么定义 (userid, itemid) 作为你的主键是有意义的 table 。

如果您确实允许同一对出现不止一次,那么您当然不需要该约束。

关于mysql - 是否应该始终将主键添加到 innodb 表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176415/

相关文章:

php - Laravel Homestead 无法连接到数据库

sql - 涉及多个地点的库存 ERD

用于个性化用户访问每个站点的 MySQL 结构?

php - 断开和连接到多个数据库

php - 如何让一个 PHP 页面有两个 "column"区域?

mysql - dbUploadTemplate [pkg-monitor] 上的 R 包 monitoR 错误

php - mysql文本中出现奇怪的字符

database - 5场复合PK vs代理PK

mysql - 数据透视表的外键和约束,删除级联

java - SQL 连接问题(网址错误?)