【发布时间】:2017-11-02 10:23:28
【问题描述】:
请有人简化将 UNIQUE CONSTRAINT 添加到列的解释。 在创建键索引时,SQL SERVER 是复制行中的所有信息并将其添加到索引中,还是仅将应用了 UNIQUE CONSTRAINT 的列中的数据添加到索引中?
我希望我解释得正确。
任何帮助将不胜感激。
李。
编辑**
好的,我想我明白了吗?
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 列重新排序整个表?
在非聚集索引中还有另一个“表”来存储排序?
【问题讨论】:
-
唯一索引和唯一约束的基本区别是可以禁用索引,唯一约束不能。我不太清楚你想问什么。
-
@prabhat。抱歉,我会尝试解释得更好一些。假设我创建了一个包含 5 列 col1、col2、col3、col4、col5 的表并添加唯一到 col5,SQL Server 是将每列的数据复制到索引中还是仅从 col5 复制?
标签: sql-server unique-constraint