您的位置: 网站首页 > 数据库 > SQL Server数据库应用技术 > 第7章 索引 > 【7.1 索 引 概 述】

7.1 索 引 概 述

 

索引在早期的数据库管理系统中作用十分明显,是数据库技术中一个重要的部分。本章将介绍索引的基本概念及其使用。

本章主要内容

&        索引的概念

&        索引的创建

&        索引的使用

7.1 

利用索引可以快速访问数据库表中的特定信息,索引是对表中一个或多个列的值进行排序的结构。它提供了指针以指向存储在表中指定列的数据值,然后根据指定的排序方法来排列这些指针。数据库使用索引的方法与使用书的目录相似,通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。

使用索引后,数据库存储时包含两种页面,即存放数据的数据页面和存储索引的索引页面。索引页面存放检索数据行的关键字值和该数据行的存储地址的指针,通过该指针即可直接检索到数据,这会加速物理数据的检索。例如,在student表的sno列上建立索引,索引页上的关键字若为“20 061 588 160 601”,则表示sno字段值为20 061 588的行存储在16盘区6页面,而且是表中第一个数据行。

SQL Server在创建索引时,让数据库扫描表,收集作为索引的列值,再写入该值所在数据行的地址信息,这样就可以使得数据库服务器在查询表寻找匹配数据前,通过扫描索引页来跳转到相应的数据行。索引对下列查询很有帮助。

·    搜索符合特定关键字值的行,即在查询时使用WHERE语句指定具有给定值的列条目。例如,WHERE sno='20063452'

·    搜索在一个范围内的关键字值的行,即查询值介于两个值之间的列条目。例如,where score BETWEEN 60 and 85

一般来说,对表的查询都是通过主键来进行的,因此,首先应该考虑在主键上建立索引。此外,连接中频繁使用的列也可以考虑建立索引。但是并不是所有情况下建立索引都会提高性能,特别是使用INSERTUPDATE来插入或更新数据时,维护所建立的索引会花费很多时间和空间。出现下列情况时,一般不考虑建立索引。

·    在查询时很少或从不引用的列。

·    只有两个或几个值的列,比如“性别”列,只取“男”和“女”。

·    记录数目较少的表。

根据索引的顺序和数据库的物理存储顺序是否相同,可将索引分为聚集索引和非聚集索引。这两者都包括存放索引的索引页面和存放记录的数据页面。聚集索引保证数据库表中记录的顺序与索引顺序一致,而非聚集索引中数据库表中记录的顺序与索引顺序可以不同。一个表中只能有一个聚集索引,而表中每一列上都可以有自己的非聚集索引。