为什么我们需要主键,它与索引有什么关系
我有一个场景,其中有两个表具有唯一元素,并且两个表都包含相同类型的记录。现在一张桌子有主键,另一张没有。所以如果我在这两个表中都有独特的元素,那么有主键的优点是什么。以及主键如何与索引相关联。 我在诺基亚采访中被问到这个问题。相当混乱,请回答一些例子。为什么我们需要主键,它与索引有什么关系
有主键的优点是什么?
主键或诱导而迫使列有两个条件 -
- 独特价值
- NOT NULL
所以,当一个表行插入它必须遵循这两个条件。如果表已经有一些记录,它会检查唯一性,同时添加约束。如果该属性有重复条目,那么你不能添加主键约束。
主键与索引的关系如何?
当您声明属性为PRIMARY KEY
时,默认情况下将在该属性上创建索引。 这有助于在记录数量过高时更快地访问记录。 (=>更快的抓取)。
但是对于一个小表索引会减慢速度,因为每次插入/更新行时都需要更新索引。
以防万一我将所有记录都视为唯一记录。正如我提到的一个例子,初级将如何增加优势。你能否按照 –
的描述在属性上添加主键在记录上创建索引。所以性能会更好,只有独特的记录(没有索引)情况并非如此。另外,唯一的列可以为空,主要不能。除此之外,我没有看到任何其他原因。希望这可以帮助 –
可能有[主键或唯一索引?]的副本(https://stackoverflow.com/questions/487314/primary-key-or-unique-index) – Szymon
[主键和唯一键之间的区别] (https://stackoverflow.com/questions/9565996/difference-between-primary-key-and-unique-key) – krokodilko
还有一篇文章[Wikipedia - unique keys](https://en.wikipedia.org/wiki/Unique_key) – krokodilko