没有表的'id'主键是不是一个好主意?

Mat*_*att 6 mysql sql

在我看来,它总是一个好主意,但有没有一个案例,你最好没有这个在桌子上?

Qua*_*noi 6

通常,你应该有一些PRIMARY KEY.

当您不想要时,有一些非常特殊的情况,最明显的是堆组织(非集群)日志表,它们没有任何索引来加速插入.

请注意,在表中MySQL,InnoDB表不能进行堆组织,因此这只涉及MyISAM表.

另请注意,a PRIMARY KEY可以是复合的,就像在many-to-many关系表中一样.id在这样的表中不会有列,但是您将拥有由id相关表的列组成的复合主键.

有关详细信息,请参阅此问题:


Joh*_*ker 2

根据我的经验,几乎从来没有。(对于“速度很重要,我只是插入并且此时并不真正关心检索”的应用程序风格,也许。)

虽然您可能永远不会使用 ID 字段,但拥有一个愉快的 AUTO_INCRMENTing 几乎总是明智的,因为有一天您可能需要一个。(当然,您可以简单地执行“ALTER..”来添加一个,但这不是重点。)