是否应将主键添加到innodb表中?

Cli*_*ote 5 mysql database indexing database-design database-optimization

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

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

我应该在这些表中添加第3列并将其作为主键,还是在性能或任何其他好处方面,它现在的方式更好?

a_h*_*ame 6

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

主键不一定是"ID列".

如果您只允许在用户和项目之间关联一个(用户不能两次分配相同的项目),那么定义(userid, itemid)为表格的主键是有意义的.

如果你允许同一对出现不止一次,那么你当然不需要那个约束.