第一次回答:
一、索引是什么
索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由
表或视图中的一列或多列生成的键。这些键存储在一个结构(B 树)中,使 SQL Server
可以快速有效地查找与键值关联的行。
表或视图可以包含以下类型的索引:
* 聚集
o 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。索引定义中包
含聚集索引列。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序。
o 只有当表包含聚集索引时,表中的数据行才按排序顺序存储。如果表具有聚集索
引,则该表称为聚集表。如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构
中。
* 非聚集
o 非聚集索引具有独立于数据行的结构。非聚集索引包含非聚集索引键值,并且每
个键值项都有指向包含该键值的数据行的指针。
o 从非聚集索引中的索引行指向数据行的指针称为行定位器。行定位器的结构取决
于数据页是存储在堆中还是聚集表中。对于堆,行定位器是指向行的指针。对于聚集表,
行定位器是聚集索引键。
o 您可以向非聚集索引的叶级添加非键列以跳过现有的索引键限制(900 字节和 16
键列),并执行完整范围内的索引查询。
聚集索引和非聚集索引都可以是唯一的。这意味着任何两行都不能有相同的索引键值。另
外,索引也可以不是唯一的,即多行可以共享同一键值。
每当修改了表数据后,都会自动维护表或视图的索引。
索引和约束
对表列定义了 PRIMARY KEY 约束和 UNIQUE 约束时,会自动创建索引。例如,如果创
建了表并将一个特定列标识为主键,则 数据库引擎自动对该列创建 PRIMARY KEY 约束
和索引。有关详细信息,请参阅创建索引(数据库引擎)。
二、索引有什么用
与书中的索引一样,数据库中的索引使您可以快速找到表或索引视图中的特定信息。索引
包含从表或视图中一个或多个列生成的键,以及映射到指定数据的存储位置的指针。通过
创建设计良好的索引以支持查询,可以显著提高数据库查询和应用程序的性能。索引可以
减少为返回查询结果集而必须读取的数据量。索引还可以强制表中的行具有唯一性,从而
确保表数据的数据完整性。
设计良好的索引可以减少磁盘 I/O 操作,并且消耗的系统资源也较少,从而可以提高查询