为啥我们需要主键以及它与索引有何关系
Posted
技术标签:
【中文标题】为啥我们需要主键以及它与索引有何关系【英文标题】:why we need primary key and how does it related with index为什么我们需要主键以及它与索引有何关系 【发布时间】:2017-09-08 11:48:20 【问题描述】:我有一个场景,其中有两个具有唯一元素的表,并且两个表都包含相同类型的记录。现在一个表有主键,另一个没有。那么如果我在两个表中都有唯一元素,那么拥有主键有什么好处。以及主键与索引的关系。? 我在诺基亚面试中被问到这个问题。非常令人困惑,请用某种例子回答。
【问题讨论】:
Primary key or Unique index?的可能重复 difference between primary key and unique key的可能重复 Wikipedia - unique keys也有文章 【参考方案1】:拥有主键有什么好处?
主键诱导或强制列具有两个条件-
-
唯一值
非空
因此,当插入表格行时,它必须满足这两个条件。如果表已经有一些记录,它将在添加约束时检查唯一性。如果该属性有重复条目,则不能添加主键约束。
主键和索引有什么关系?
当您将属性声明为PRIMARY KEY
时,默认情况下会在该属性上创建索引。
当记录数过多时,这有助于更快地访问记录。 (=> 更快的获取)。
但是对于小表,索引会减慢速度,因为每次插入/更新一行时它都需要更新索引。
【讨论】:
如果我的所有记录都是唯一的。正如我提到的一个例子,primary 将如何增加优势。你能按照那个描述一下吗 在属性上添加主键会在记录上创建索引。所以性能会更好,这不是只有唯一记录(没有索引)的情况。唯一列也可以为空,主列不能为空。我没有看到除此之外的任何其他原因。希望这会有所帮助以上是关于为啥我们需要主键以及它与索引有何关系的主要内容,如果未能解决你的问题,请参考以下文章
为啥我们需要使用 Android Studio 来构建 Flutter 应用? [关闭]
什么是 HSQLDB(Hyper SQL)以及它与其他数据库有何不同?