主键和索引概念

时间:2010-07-20 15:16:31

标签: indexing

我创建一个列作为主键,这会自动创建索引吗?或者我是否需要明确创建索引。我假设主键也维护索引

2 个答案:

答案 0 :(得分:2)

在SQL Server中,创建主键将在该列上创建唯一的聚簇索引。 或者更具体地来自here

  

注意PRIMARY KEY约束创建   如果没有,则自动聚簇索引   聚集索引已存在于   表和非聚集索引不是   在创建PRIMARY时指定   关键约束。

答案 1 :(得分:0)

这应该清除一些空气。

--creating a table without any primary key
CREATE table understanding_indexes
 (P_Id int,
 LastName varchar(255),
 FirstName varchar(255),
 Address varchar(255),
 City varchar(255)
 )
 --
 --checking for indexes
 sp_helpindex understanding_indexes

输出

 The object 'understanding_indexes' does not have any indexes, or you do not have permissions.

--ADDING A NOT NULL CONSTRAINT
ALTER TABLE UNDERSTANDING_INDEXES 
ALTER COLUMN P_Id INTEGER
NOT NULL

--ADDING A PRIMARY KEY Constraint, can only be done on column which are not null.
ALTER TABLE UNDERSTANDING_INDEXES
ADD PRIMARY KEY (P_Id)

sp_helpindex understanding_indexes

输出

PK__understa__A3420A5702084FDA  clustered, unique, primary key located on PRIMARY  P_Id

总的来说,只要在表上添加主键约束,它就会自动在表上添加聚簇索引。

此插图位于SQL Server 2008 R2上。