在PostgreSQL中,没有使用主键的表是什么

时间:2015-06-08 05:07:05

标签: sql postgresql

我已经阅读了很多关于这个问题的内容..(另请阅读:Tables with no Primary Key) 似乎没有理由使用没有PK的表。那么为什么PostgreSQL允许呢?如果不指出PK,你能举个例子吗?

3 个答案:

答案 0 :(得分:1)

主键是唯一约束的特殊形式。唯一约束始终由索引备份。索引的缺点是需要时间来更新。具有索引的表具有较低的updatedeleteinsert性能。

因此,如果您的表具有大量修改和少量查询,则可以通过省略主键来提高性能。

答案 1 :(得分:1)

我认为你的问题的答案在于试图了解首先拥有主键(PK)的缺点。

一个明显的缺点' (取决于你如何看待)维护PK是因为它在INSERT期间有自己的开销。因此,为了提高INSERT性能(假设例如示例案例是一个日志记录表,其中查询是脱机完成的)我会尽可能删除所有Constraints / PK并且肯定会提高表性能。您可能会认为纯日志记录应该在数据库之外完成(在诸如Cassandra之类的noSQL数据库中),但至少在PostgreSQL中也是如此。

答案 2 :(得分:0)

AFAIK,主键主要用于表之间的关系作为外键。如果您有一个没有链接到任何内容的表,则不需要主键。在Excel电子表格中,没有主键,但电子表格不是关系数据库。