摘自MSDN:“CREATE INDEX (Transact-SQL) ”
为指定表或视图创建关系索引,或为指定表创建 XML 索引。可在向表中填入数据前创建索引。可通过指定限定的数据库名称,为另一个数据库中的表或视图创建索引。
create index indexName on tableName(colName) with (options)
这样创建的为 non unique ,nonclustered 索引
UNIQUE :为表或视图创建唯一索引。唯一索引不允许两行具有相同的索引键值。视图的聚集索引必须唯一。默认为non unique CLUSTERED:创建索引时,键值的逻辑顺序决定表中对应行的物理顺序。聚集索引的底层(或称叶级别)包含该表的实际数据行。一个表或视图只允许同时有一个聚集索引。有关详细信息,请参阅聚集索引结构。如果没有指定 CLUSTERED,则创建非聚集索引。
NONCLUSTERED :创建一个指定表的逻辑排序的索引。对于非聚集索引,数据行的物理排序独立于索引排序。有关详细信息,请参阅非聚集索引结构。
无论是使用 PRIMARY KEY 和 UNIQUE 约束隐式创建索引,还是使用 CREATE INDEX 显式创建索引。每个表都最多可包含 249 个非聚集索引。
对于索引视图,只能为已定义唯一聚集索引的视图创建非聚集索引。
默认值为 NONCLUSTERED。
摘自MSDN:“创建唯一索引”
摘自MSDN:“FOREIGN KEY 约束”
摘自MSDN:“CHECK 约束”
创建唯一索引可以确保任何生成重复键值的尝试都会失败。创建 UNIQUE 约束和创建与约束无关的唯一索引并没有明显的区别。进行数据验证的方式相同,而且对于唯一索引是由约束创建的还是手动创建的,查询优化器并不加以区分。但是,在进行数据集成时,应当对列创建 UNIQUE 约束。这可以使索引的目的更加明晰。
惟一索引可通过以下方式实现:
- PRIMARY KEY 或 UNIQUE 约束
在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自动对一列或多列创建唯一聚集索引。主键列不允许空值。
在创建 UNIQUE 约束时,默认情况下将创建唯一非聚集索引,以便强制添加 UNIQUE 约束。如果不存在该表的聚集索引,则可以指定唯一聚集索引。
有关详细信息,请参阅 PRIMARY KEY 约束和 UNIQUE 约束。 - 独立于约束的索引
可以为一个表定义多个唯一非聚集索引。
有关详细信息,请参阅 CREATE INDEX (Transact-SQL)。 - 索引视图
若要创建索引视图,请对一个或多个视图列定义唯一聚集索引。视图的执行(具体化)和结果集的存储都是在索引叶级别进行的。结果集的存储方式与表数据在聚集索引中的存储方式相同。有关详细信息,请参阅创建索引视图。
摘自MSDN:“UNIQUE 约束”
摘自MSDN:“PRIMARY KEY 约束”