有人能告诉我主键和索引键有什么区别吗?什么时候用哪一种?

推荐答案

主键是一种特殊的索引,因为:

  • 只能有一个;
  • 它不能为空;以及
  • 它必须是唯一的.

您倾向于使用主键作为行的最自然的唯一标识符(例如社会保险号、员工ID等,尽管有一种学派认为您应该始终使用人工代理键来实现这一点).

另一方面,索引可以用于基于其他列的快速检索.例如,员工数据库可能将您的员工编号作为主键,但也可能包含关于您的姓氏或部门的索引.

这两个索引(姓氏和部门)都不允许NULL(可能),而允许重复(几乎肯定),它们对于加快查询具有(例如)姓氏"Corleone"或在"Hitman"部门工作的人非常有用.

Database相关问答推荐

Kusto:从一个表中复制行并追加到同一集群中的另一个表中

Postgres和Oracle之间 Select 查询的结果差异

KUST查询指定时间跨度内里程表&值的差值,并将其滚动到0

UML 类图中关联的复杂规则

怎么修复ORA-28001: the password has expired

java嵌入式库磁盘键值数据库

如何理解mysql explain 命令

Android Room持久性库@Update不起作用

Android - SQLite 数据库存储在哪里?

触发器内的多个插入/更新语句?

是否有一个 postgres 命令来列出/删除所有materialized视图?

使用十进制数据类型(MySQL / Postgres)是否会影响性能

有人可以详细解释 SOLR requestHandlers 和 responseWriters 吗?

我应该将用户 ID 公开吗?

传递依赖有什么问题?

ORM 还是Vietnam of Computer Science吗?

用 SQL 进行条件插入?

复制没有 LOCK 权限的 postgres 数据库

为什么 OODBMS 不像 RDBMS 那样普遍?

Cassandra - 事务支持