1

经过网上关于唯一键唯一索引的一些研究。我知道他们都验证了列,但是唯一索引对性能更好。
更好的是,如果我有一个超过 500 行的表(我已经将主键用于其他列),则特别添加一个唯一键或唯一索引。
- 如果唯一索引因为性能更好,那么我们什么时候使用唯一键?因为他们都接受 null 有价值的(顺便说一下,我们可以让他们只接受不有价值的 null 吗?比如“添加唯一键不为 null”?)
- 如果唯一键更好,如果一年后表格是 2000 行,我我不确定这些表将来是否会有很多记录。

编辑:
我试图在重复列上使用唯一键,即使没有验证它也会给我一个错误。我不得不在重复列上创建一个索引。

4

3 回答 3

4

您的整个问题都基于“我知道他们都验证了该列,但是唯一索引对性能更好。” 这是非常值得怀疑的,因为唯一约束通常由唯一索引支持,并且唯一索引和非唯一索引之间的性能差异很小。索引始终支持唯一约束。

我们使用唯一约束是因为索引不是约束,它只是一种强制机制。您可以使用非唯一索引支持的唯一约束来允许约束也可以延迟。

于 2013-06-18T08:21:10.703 回答
2

It's mainly about semantics. A unique key is an actual rule. A unique index is an index that helps Oracle to (quickly) enforce that rule. In older versions of Oracle ( < 8), creating a unique key also made Oracle create an index automatically. Later, this was changed.

A great post, explaining the differences and history in more detail can be found here:

http://www.jlcomp.demon.co.uk/faq/uk_idx_con.html

于 2013-06-18T07:13:01.473 回答
2

both UNIQUE INDEX and UNIQUE KEY enforces uniqueness of the values of the field. But if you have to reference the field with the foreign key from other table, then you need unique KEY.

by the way can we make them accept only not null valuable ?

Yes, use both NOT NULL AND UNIQUE CONSTRAINT

And of course, if you want performance on the search by that field, add INDEX on that field.

于 2013-06-18T07:13:16.190 回答