索引(一):顺序索引(稠密索引,稀疏索引和B+树索引)
标签:
数据库it |
分类: 数据库概念与技术 |
一.聚集索引和非聚集索引
这里“索引”是个抽象的概念,或者说是一个状态概念,而不是具体的某个索引文件;在某个搜索码上建立了索引,我们就说某个属性有索引。所以说,记录文件和索引文件是不同的概念,下面我们来说明
二.索引记录和索引顺序文件
这里的指针指向的是磁盘空间(磁盘块的标识,标识磁盘块内内记录的块内偏移量);
所以可以说,索引记录是在记录文件(简单理解为一个表)的某个属性上建立了索引而生成的;
三.顺序索引的分类
分情况看利弊,如果记录量适中,用稠密索引可以获得较好的响应时间;
如果记录量很多,百万级的,用稠密索引,索引(文件)本身就很难以去维护,因为搜索索引时的跨磁盘块数就至关重要(因为处理数据库请求的主要时间开销就是把块从磁盘读到主存的时间),而索引在磁盘上以顺序文件存储,对数量很多的索引记录的查询就会涉及到多个块,这是我们不希望的。但是对每个块建立稀疏索引已经是公认的利远远大于弊的做法。
对于上述庞大稠密索引的解决办法之一就是建立多级索引,于是就引出了B+树索引的理念。两个概念很像,但是也有不同;
四.B+树索引
索引顺序文件组织最大的缺点就在于,随着文件的增大,索引查找性能和数据扫描性能都会下降。
B+树索引结构是使用最为广泛的,在数据插入和删除的情况下仍能保持执行效率的几种索引结构之一。
B+树索引中的B就是Balance,顾名思义,平衡树,是B树的一种变形;
B+树索引虽然在有数据插入和删除时效率不高,但是,用自己的话来说,就是B+树能做到一步到位,一劳永逸,加上其在查找上的高效,所以才能受到追捧。
上图是一个B+树示意图,叶子节点直接存储记录,在搜索时按照稀疏索引的搜索方法,找到大于最小(相当于小于等于)的那个节点,一级一级往下搜索。
关于B+树的增删导致的节点变动这里不再说了,具体内容可参照数据结构。

加载中…