默认情况下,唯一约束是否为索引?如果没有,在SELECT ... WHERE子句中使用它时,唯一约束是否与索引列具有相同的性能结果?

由于

有帮助吗?

解决方案

唯一约束必然是索引。您通常将其定义为<!> quot; UNIQUE INDEX <!> quot;。在任何情况下都需要一个索引来有效地实现一个唯一的约束,所以有一个是没有缺点的。

其他提示

约束实际上与索引非常不同:它只是说MySQL应该为你强制执行唯一性。然而,索引(尽管它可以是唯一的)是关于硬盘上的物理排序,或关于允许在列上进行有效搜索的其他结构(通常是树)。

然而,您可能会将所有这些与主键(用于定义(通常是群集的)唯一索引)混淆。

唯一约束是一种表达某事实(如属性值的某种组合)在整个关系范围内必须是唯一的事实的方式(<!> quot; table <!> quot;))。

这是LOGICAL设计的水平。

索引是帮助实施此类约束的可能有用的方法。

这是物理设计的水平。

某些DBMS产品可能会从某些逻辑设计构造(例如UNIQUE约束)的存在推断出某些物理设计构造,例如某些索引的存在。其他人可能没有。

UNIQUE实际上是 on 索引的约束,所以是的,UNIQUE意味着你要强制执行唯一性的字段上有索引。

在开始使用唯一约束之前检查主键约束。

主键约束相当于声明唯一约束和非空约束。如果主键中有多个列,则每列都会获得一个非空约束,但唯一约束适用于一起使用的所有列。

当您声明主键时,DBMS将为您创建索引。您可以根据需要删除索引,但是当DBMS执行表扫描以检查唯一性时,您将获得可怕的性能。

主键约束强制实体完整性,而REFERENCES(外键)约束强制引用完整性。它们共同确保数据完整性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top