Lij*_*raj 4 sql-server unique-key clustered-index
我是SQL Server的新手,在学习聚簇索引时,我很困惑!
唯一键是聚簇索引还是非聚簇索引?唯一键仅在包含null的列中保存唯一值,因此根据此概念,唯一键应为聚簇索引,对吗?但是当我浏览本文时,我对MSDN感到困惑
创建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;
Run Code Online (Sandbox Code Playgroud)
对于未指定为唯一SQL Server的索引,它将以任何方式静默地使其唯一。对于聚簇索引,这是通过将唯一标识符附加到重复键来完成的。对于非聚集索引,将行标识符(逻辑或物理)添加到键中以确保唯一性。
| 归档时间: |
|
| 查看次数: |
9097 次 |
| 最近记录: |