数据库索引基础知识点总结
数据库索引是数据库管理系统中提高查询效率的重要技术手段。索引可以看作是一种快速查找数据的数据结构,它可以根据字段值快速定位数据。索引的作用类似于书籍中的目录,能够快速地定位数据。
索引的基本概念:
* 索引项按数据页(SQL Server 中为 8KB)存储。
* 表中的全部索引连在一起。
* 索引一般采用 B 树结构。
索引存储结构及类型:
* 采用 B- 树结构来存储索引。
* 索引页存放索引项和指向下一层的指针。
* 数据页用来存放数据。
* 根据索引对物理数据的影响来划分,索引分为:
+ 聚集索引(Clustered Index)
+ 非聚集索引(Non-clustered Index)
聚集索引:
* 聚集索引的 B- 树按自下而上建立,最下层的叶级节点存放数据,它同时也是数据页。
* 多个数据页生成一个中间层节点的索引页,然后再由数个中间层的节点的索引页合成更上层的索引页,如此上推,直到生成顶层的根节点的索引页。
* 聚集索引可以由多个列(组合索引)组成。
* 一个表只能包含一个聚集索引。
非聚集索引:
* 数据页存储在一个地方,非聚集索引页存储在另一个地方。
* 数据不按非聚集索引关键字值的顺序排序和存储。
* 叶级节点不是存放数据的数据页。
* 叶级节点内容:非聚集索引关键字值、行定位器。
索引的创建:
* 创建聚集索引:CREATE CLUSTERED INDEX 索引名字 ON 基本表或视图名 ( 列名 [ ASC | DESC ] [ ,...n ] )
* 创建非聚集索引:CREATE INDEX 索引名字 ON 基本表或视图名 ( 列名 [ ASC | DESC ] [ ,...n ] )
索引的应用:
* 索引可以加速数据的查询速度。
* 索引可以用于快速定位数据。
* 索引可以用于实现数据的快速排序和分组。
索引的注意事项:
* 频繁更改的列不适合建立索引。
* 字节长的列不适合建立索引。
* 在聚集索引的叶节点中,数据按聚集索引项的值进行物理排序。
* 一个索引可以由多个列(组合索引)组成。
* 一个表只能包含一个聚集索引。