我已经阅读了很多关于这个问题的内容..(另请阅读:Tables with no Primary Key) 似乎没有理由使用没有PK的表。那么为什么PostgreSQL允许呢?如果不指出PK,你能举个例子吗?
答案 0 :(得分:1)
主键是唯一约束的特殊形式。唯一约束始终由索引备份。索引的缺点是需要时间来更新。具有索引的表具有较低的update
,delete
和insert
性能。
因此,如果您的表具有大量修改和少量查询,则可以通过省略主键来提高性能。
答案 1 :(得分:1)
我认为你的问题的答案在于试图了解首先拥有主键(PK)的缺点。
一个明显的缺点' (取决于你如何看待)维护PK是因为它在INSERT
期间有自己的开销。因此,为了提高INSERT
性能(假设例如示例案例是一个日志记录表,其中查询是脱机完成的)我会尽可能删除所有Constraints / PK并且肯定会提高表性能。您可能会认为纯日志记录应该在数据库之外完成(在诸如Cassandra之类的noSQL数据库中),但至少在PostgreSQL中也是如此。
答案 2 :(得分:0)
AFAIK,主键主要用于表之间的关系作为外键。如果您有一个没有链接到任何内容的表,则不需要主键。在Excel电子表格中,没有主键,但电子表格不是关系数据库。