数据库之索引
索引
基本概念:
在数据库中建立索引是为了加快数据的查询速度。数据库中的索引与书籍中的目录类似。数据库中的索引是一个表中所包含的列值的列表,其中注明了表中包含各个值的行数据所在的存储位置。可以为表中的单个列建立索引,也可以为一组列建立索引。索引一般采用B树结构。索引由索引项组成,索引项由来自表中每一行(注意是数据表中的每一行)的一个或多个列(称为搜索关键字或索引关键字)组成。B树按搜索关键字排序,可以对组成搜索关键字的任何子词条集合上进行高效搜索。
比如在一张学生表中,第一列是学生的id,也是索引列。那么当数据库要根据指定的id时查找该学生的信息时,它能够识别id列是索引列,并首先在索引部分(按id有序存储)查找该id,然后根据找到的id所指向的数据的存储位置,直接检索出需要的信息。
索引为查找所带来的性能好处是有代价的。首先索引在数据库中会占用一定的存储空间来存储索引信息。其次,在对数据进行插入、更改和删除操作时,为了使索引与数据保持一致,还需要对索引进行维护。对索引的维护是需要花费时间的。
存储结构以及分类:
索引分为两大类,一类是聚集索引(clustered index,也称为聚簇索引),另一类是非聚集索引(non-clustered index,也称为非聚簇索引)。
聚集索引是对数据按索引关键字进行物理排序,非聚集索引不对数据进行物理排序。聚集索引和非聚集索引一般都使用B树结构来存储索引项,而且都包含数据页和索引页,其中索引页是用来存放索引项和指向下一层的指针,数据页用来存放数据。