我创建一个列作为主键,这会自动创建索引吗?或者我是否需要明确创建索引。我假设主键也维护索引
答案 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上。