第六章索引解析.ppt

第六章 索引 6.1 了解索引 一、索引的概念   索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 从功能上看,索引类似于图书馆的藏书目录。    了解索引——二、索引的结构 再论数据库的物理结构——页和盘区 SQL Server在数据文件中以盘区和页为单位管理空间。 页——每页是8KB大小,页是SQL Server最基本的I/O单位,任何时候从磁盘读数据或者往磁盘写数据,一次要操作一页或者多页。 盘区——在磁盘上每8页为一组,称为盘区。盘区是给数据库中对象分配的最基本的单位。 了解索引 索引的结构   SQL Server的索引是以B-树结构来维护的。 了解索引 一个索引的例子 了解索引——三、索引的分类 根据表中数据行的被索引列的关键字是否按照索引中的关键字的顺序进行排序,将索引分为 聚集索引 非聚集索引 了解索引 1、聚集索引(Clustered Index)     聚集索引对表的物理数据页中的数据按列进行排序,然后再重新存储在磁盘上,即聚集索引与数据是混为一体的,它的叶节点中存储的是实际的数据。 说明: a. 聚集索引所需的空间大约相当于表中数据所占空间的120%。(所有数据行按索引列的取值完全重新排序) b. 表的数据行只能以一种排序方式存储在磁盘上,故一个表只能建立一个聚集索引。 c. 表中行的物理顺序与索引中行的物理顺序是一致的。 例子 了解索引 聚集索引的体系结构 了解索引 页拆分    如果我们向一个已满的索引页中添加新行时,SQL Server系统会把大约一半的行移动到新页中以便为新的行或索引条目腾出空间,称这种重组为页拆分。    在SQL Server系统中,页拆分就意味着在索引的B-树结构中进行索引行的移动与重组,这样就会降低系统的性能并可能会使表的数据存储产生碎片。 解决方法----填充因子    在创建索引时,指定一个填充因子,以便在索引的每个叶级页上留出额外的间隙和保留一定百分比的空闲空间,供将来表的数据存储容量进行扩充和减少页拆分的可能性。    填充因子的取值从1到100的百分比数值,指定在创建索引后对数据页的填充比例。值越小表示数据页上空闲空间越大。 了解索引 聚集索引的适用场合   聚集索引对于那些经常要搜索范围值或特定值的列效率相当高。 包含大量非重复值的列; 使用BETWEEN、、=、和=运算返回一个范围值的查询; 被连续访问的列; 对于经常被使用联接或GROUP BY子句的查询访问的列经常是外键列,因为这些行已经排序,故可以无需排序。  了解索引 2、非聚集索引(Nonclustered Index)  非聚集索引不改变表中数据行的物理存储顺序,数据存储与索引存储是分开的,索引通过指针指向表中数据的存储位置,但是表中数据本身并不保证是有序的。  说明:  1.非聚集索引的叶节点中存储了组成非聚集索引的关键字的值和行定位器。   2.行定位器的结构和存储内容取决于数据的存储方式:   1) 若表上创建有聚集索引,则行定位器中存储的是聚集索引的索引键。   2) 若表是堆集(表上无聚集索引),则行定位器即为指向数据行的指针(也叫RID,由文件标识符、页号和页上的行号组成)。  了解索引 非聚集索引的体系结构 了解索引 非聚集索引的适用场合   非聚集索引特别适合对特定值进行搜索。每个表最多可以创建249个非聚集索引。 包含大量非重复值的列; 不返回大型结果集的查询; 经常返回精确匹配的查询的搜索条件(where子句)中使用的列; 经常需要进行联接和分组操作的列,可以创建多个非聚集索引 了解索引 四、唯一索引   唯一索引可以确保所有数据行中任意两行的被索引列不包括NULL在内的重复值。如果是复合唯一索引(有多列),则该索引可以确保索引列中每个组合都是唯一的。   说明:   1.只有当唯一性是数据本身的特征时,指定唯一索引才有意义。   2.当创建PRIMARY KEY或UNIQUE约束时,系统会在表中指定的列上自动创建唯一索引。   3.建立唯一索引的字段最好设置为NOT NULL,因为两个NULL值将被认为是重复的字段值。 了解索引 五、系统如何访问表中的数据   一般地,系统访问数据表中的数据,有两种方法: 表扫描    系统将指针放置在该表的表头数据所在的数据页上,然后按照数据页的排列顺序,一页一页地从前向后扫描该表数据所占有的全部数据页,直至扫描完表中的全部记录。在扫描时,如果找到符合查询条件的记录,那么就将这条记录挑选出来。最后,将全部挑选出来符合查询语句条件的记录显示出来。 索引查找    系统沿着索引的树状结构,根据索引中关键字和指针,找到符合查询条件的的记录。最后,将全部查找

文档评论(0)

1亿VIP精品文档

相关文档