database:主键,Clustered或NonClustered

时间:2012-05-22 17:26:17

标签: database sql-server-2008 primary-key clustered-index

我正在SQL Server 2008中创建一个数据库,

CREATE TABLE Users
(
    U_Id INT NOT NULL
    FirstName VARCHAR(50) NOT NULL,
    LastName VARCHAR(50) NOT NULL,
    Email VARCHAR(200)
    Password VARCHAR(50)
)

我想让U_Id成为主键。 我想问一下

之间有什么区别
 CONSTRAINT pk_UserID PRIMARY KEY (U_Id)

 CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id)

和这个

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id)

何时使用?

我读了一些文章,但我还不清楚。有人能给我一个快速解释吗?

1 个答案:

答案 0 :(得分:40)

以下声明:

CONSTRAINT pk_UserID PRIMARY KEY (U_Id)

与此相同:

CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id)

您只能通过一个索引排序表数据物理性,默认情况下,索引是用于主键的索引(主键唯一约束始终由索引支持) )。

如果您想根据其他索引保留要存储的表数据的顺序,那么您应该使用以下命令创建主键:

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id)

然后使用:

创建聚簇索引
CREATE CLUSTERED INDEX ix_Email ON Users (Email);