【发布时间】:2018-01-20 12:56:48
【问题描述】:
我试图了解 SQL 中唯一索引的原因。
关于唯一约束与唯一索引的讨论很多。在大多数 SQL 实现中,不仅似乎没有任何实际区别,而且在幕后,唯一约束通常似乎与唯一索引的处理方式相同。
如果
CREATE TABLE t1 (col1, col2 UNIQUE);
类似于:
CREATE TABLE t1 (col1, col2);
CREATE UNIQUE INDEX t1_col2 ON t1 (col2);
就如何处理 UNIQUE 约束而言,为什么我们首先要有唯一索引?它们似乎是多余的。然而所有 SQL 实现似乎都有它们,这意味着它们的存在可能是有充分理由的。
这是什么原因?
【问题讨论】:
-
在 Oracle 中,如果我没记错的话,只有在版本 7 中才添加了约束。在此之前,我们只使用唯一索引来强制执行唯一性。我同意它们是多余的,我希望它们不存在。不过,我不确定这个问题是否有非基于意见的答案。
标签: sql unique-constraint unique-index