聚集索引介绍
在聚集索引中,表中各行的物理顺序与键值的逻辑 (索引) 顺序相同.表只能包含一个聚集索引.
如果不是聚集索引,表中各行的物理顺序与键值的逻辑顺序不匹配.聚集索引比非聚集索引有更快的数据访问速度.
聚集索引通常可加快 UPDATE 和 DELETE 操作的速度,因为这两个操作需要读取大量的数据.创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组.
可考虑将聚集索引用于:
1. 包含数量有限的唯一值的列,如 state 列只包含 50 个唯一的州代码.
2. 使用下列运算符返回一个范围值的查询:BETWEEN,>,>=,< 和 <=.
3. 返回大结果集的查询.
创建聚集索引
在数据库关系图中选择要创建索引的表,右击该表,然后从快捷菜单中选择 "索引 / 键" 命令.
- 或 -
为要创建索引的表打开表设计器,在表设计器中右击,然后从快捷菜单中选择 "索引 / 键" 命令.
创建新索引.有关详细信息,请参见创建索引.
若要修改现有索引,请从 "选定的索引" 列表中选择该索引.
选择 "创建为 CLUSTERED" 复选框.
当保存表或关系图时,索引即创建在数据库中.
非聚集索引介绍
非聚集索引与聚集索引一样有 B 树结构,但是有两个重大差别:
数据行不按非聚集索引键的顺序排序和存储.
非聚集索引的叶层不包含数据页.
相反,叶节点包含索引行.每个索引行包含非聚集键值以及一个或多个行定位器,这些行定位器指向有该键值的数据行 (如果索引不唯一,则可能是多行).
非聚集索引可以在有聚集索引的表,堆集或索引视图上定义.在 Microsoft? SQL Server? 2000 中,非聚集索引中的行定位器有两种形式:
如果表是堆集 (没有聚集索引),行定位器就是指向行的指针.该指针用文件标识符 (ID),页码和页上的行数生成.整个指针称为行 ID.
如果表没有聚集索引,或者索引在索引视图上,则行定位器就是行的聚集索引键.如果聚集索引不是唯一的索引,SQL Server 2000 将添加在内部生成的值以使重复的键唯一.用户看不到这个值,它用于使非聚集索引内的键唯一.SQL Server 通过使用聚集索引键搜索聚集索引来检索数据行,而聚集索引键存储在非聚集索引的叶行内.
由于非聚集索引将聚集索引键作为其行指针存储,因此使聚集索引键尽可能小很重要.如果表还有非聚集索引,请不要选择大的列作为聚集索引的键.
来源: http://www.bubuko.com/infodetail-2470649.html