我是 SQL Server 新手,在学习聚集索引时,我感到很困惑!
唯一键是聚集索引还是非聚集索引? unique key只保存列中唯一的值,包括null,所以根据这个概念,unique key应该是聚集索引,对吧?但当我读完这篇文章时,我感到困惑MSDN https://msdn.microsoft.com/en-IN/library/ms186342.aspx
当您创建 UNIQUE 约束时,唯一的非聚集索引是
创建默认情况下强制执行 UNIQUE 约束。您可以指定一个
唯一的聚集索引(如果表上的聚集索引不存在)
已经存在。
请帮助我更好地理解这个概念,谢谢。
可以通过三种方法来强制 SQL Server 索引的唯一性。
它们是聚集的还是非聚集的与是否使用这些方法中的任何一种将索引声明为唯一是正交的。
所有三种方法都可以创建聚集或非聚集索引。
默认情况下,如果您没有指定任何不同的内容,唯一约束和唯一索引将创建一个非聚集索引(并且 PK 默认情况下将创建为CLUSTERED
如果不存在冲突的聚集索引)但您可以显式指定CLUSTERED
/NONCLUSTERED
对于他们中的任何一个。
示例语法是
CREATE TABLE T
(
X INT NOT NULL,
Y INT NOT NULL,
Z INT NOT NULL
);
ALTER TABLE T ADD PRIMARY KEY NONCLUSTERED(X);
--Unique constraint NONCLUSTERED would be the default anyway
ALTER TABLE T ADD UNIQUE NONCLUSTERED(Y);
CREATE UNIQUE CLUSTERED INDEX ix ON T(Z);
DROP TABLE T;
对于未指定为唯一的索引,SQL Server 将以任何方式默默地使其唯一。对于聚集索引,这是通过将唯一符附加到重复键来完成的。对于非聚集索引,行标识符(逻辑或物理)被添加到键中以保证唯一性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)