统自动创建了一个唯一性的聚簇索引。虽然,在逻辑上,主键约束是一种重要的结
构,但是,在物理结构上,与主键约束相对应的结构是唯一性的聚簇索引。换句话
说,在物理实现上,不存在主键约束,而只存在唯一性的聚簇索引。同样,在创建
唯一性键约束时,也同时创建了索引,这种索引则是唯一性的非聚簇索引。因此,
当使用约束创建索引时,索引的类型和特征基本上都已经确定了,由用户定制的余
地比较小。
当在表上定义主键或者唯一性键约束时,如果表中已经有了使用
CREATE INDEX
语句创建的标准索引时,那么主键约束或者唯一性键约束创建的索引覆盖以前创建
的标准索引。也就是说,主键约束或者唯一性键约束创建的索引的优先级高于使用
CREATE INDEX
语句创建的索引。
索引的特征
索引有两个特征,即唯一性索引和复合索引。
唯一性索引保证在索引列中的全部数据是唯一的,不会包含冗余数据。如果表中已
经有一个主键约束或者唯一性键约束,那么当创建表或者修改表时,
SQL Server
自动创建一个唯一性索引。然而,如果必须保证唯一性,那么应该创建主键约束或
者唯一性键约束,而不是创建一个唯一性索引。当创建唯一性索引时,应该认真考
虑这些规则:当在表中创建主键约束或者唯一性键约束时,
SQL Server
自动创建
一个唯一性索引;如果表中已经包含有数据,那么当创建索引时,
SQL Server
检
查表中已有数据的冗余性;每当使用插入语句插入数据或者使用修改语句修改数据
时,
SQL Server
检查数据的冗余性:如果有冗余值,那么
SQL Server
取消该语
句的执行,并且返回一个错误消息;确保表中的每一行数据都有一个唯一值,这样
可以确保每一个实体都可以唯一确认;只能在可以保证实体完整性的列上创建唯一
性索引,例如,不能在人事表中的姓名列上创建唯一性索引,因为人们可以有相同
的姓名。
复合索引就是一个索引创建在两个列或者多个列上。在搜索时,当两个或者多个列
作为一个关键值时,最好在这些列上创建复合索引。当创建复合索引时,应该考虑
这些规则:最多可以把
16
个列合并成一个单独的复合索引,构成复合索引的列的
总长度不能超过
900
字节,也就是说复合列的长度不能太长;在复合索引中,所有
的列必须来自同一个表中,不能跨表建立复合列;在复合索引中,列的排列顺序是
非常重要的,因此要认真排列列的顺序,原则上,应该首先定义最唯一的列,例如
在(
COL1
,
COL2
)上的索引与在(
COL2
,
COL1
)上的索引是不相同的,因为
两个索引的列的顺序不同;为了使查询优化器使用复合索引,查询语句中的
WHERE
子句必须参考复合索引中第一个列;当表中有多个关键列时,复合索引是
非常有用的;使用复合索引可以提高查询性能,减少在一个表中所创建的索引数
量。
---
索引的类型
根据索引的顺序与数据表的物理顺序是否相同,可以把索引分成两种类型。一种是
相关文档
评论