程序员后台开发之数据库索引

  • A+
所属分类:数据库

关于数据库索引,相信大家用到最多的一定是数据库设计和数据库查询,本篇深度解析一下数据库索引的原理,涉及数据库本身的设计原理,对设计应用的数据库结构,和数据库查询也大有益处。

 

(一)在了解数据库索引之前,首先了解一下数据库索引的数据结构基础,B+tree

B+tree 是一个n叉树,每个节点有多个叶子节点,一颗B+树包含根节点,内部节点,叶子节点。根节点可能是一个叶子节点,也可能是一个包含两个或两个以上叶子节点的节点。

B+tree的性质:

1.n棵子tree的节点包含n个关键字,不用来保存数据而是保存数据的索引。

2.所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

3.所有的非终端结点可以看成是索引部分,结点中仅含其子树中的最大(或最小)关键字。

B+tree结构原型图大概如下(引用):

程序员后台开发之数据库索引

由于B+tree的性质, 它通常被用于数据库和操作系统的文件系统中。NTFS, ReiserFS, NSS, XFS, JFS, ReFS 和BFS等文件系统都在使用B+树作为元数据索引,因为B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度(B+ 树元素自底向上插入)。

(二)数据库索引

数据库索引是用于提高数据库表的数据访问速度的。

数据库索引的特点:

a)避免进行数据库全表的扫描,大多数情况,只需要扫描较少的索引页和数据页,而不是查询所有数据页。而且对于非聚集索引,有时不需要访问数据页即可得到数据。

b)聚集索引可以避免数据插入操作,集中于表的最后一个数据页面。

c)在某些情况下,索引可以避免排序操作。

数据库索引的存储方式,类型,在运行时的操作原理,我制作成了下图:

程序员后台开发之数据库索引

 

意琳

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: