有人可以简化向列添加唯一约束的解释。创建键索引时,SQL SERVER 是复制行中的所有信息并将其添加到索引中还是仅将列中的数据添加到应用了唯一约束的列中?
我希望我解释得正确。
任何帮助将不胜感激。
李。
编辑**
好吧,我想我明白了吗?
CREATE TABLE dbo.test
(
Id int NOT NULL,
Name char(10) NOT NULL UNIQUE
);
INSERT INTO dbo.test (id, name) VALUES (1, 'Lee')
INSERT INTO dbo.test (id, name) VALUES (2, 'Paul')
INSERT INTO dbo.test (id, name) VALUES (3, 'Adam')
INSERT INTO dbo.test (id, name) VALUES (4, 'Henry')
在聚集索引中,整个表将按如下方式排序
3, Adam
4, Henry
1, Lee
2, Paul
那么,每增加一个 INSERT,服务器就必须根据 name 列对整个表重新排序?
在非聚集索引中,还有另一个“表”存储排序?
UNIQUE CONSTRAINT
将像UNIQUE INDEX
. 有2种方式:
与clustered index
这些行以相同的顺序为索引在磁盘上物理地存储。(因此,只有一个聚集索引是可能的)
使用 anon clustered index
有第二个列表,该列表具有指向物理行的指针。您可以有许多非聚集索引,尽管每个新索引都会增加写入新记录所需的时间。
如果您同时拥有聚集索引和非聚集索引,那么非聚集索引将指向聚集索引列。
这个“SO”答案将帮助您理解它。
默认情况下,唯一约束和唯一索引将创建一个非聚集索引,如果您没有指定任何不同的索引(如果不存在冲突的聚集索引,PK 将默认创建为 CLUSTERED),但您可以为任何显式指定 CLUSTERED/NONCLUSTERED其中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句