首页 > 编程知识 正文

关系型数据库索引的数据结构,索引数据结构

时间:2023-05-04 22:30:39 阅读:24767 作者:2148

1、定义

索引是提高数据检索速度的数据结果

有很多查询优化算法来提高搜索速度。 但是,每个搜索算法只能应用于特定的数据结构。

索引是数据库创建满足特定搜索算法(以某种方式引用(点)数据)的数据结构

2、索引数据结构

目前,大多数数据库系统和文件系统都采用B Tree或其变种B Tree作为索引结构

相关概念介绍

B-树(B-树) )各节点存储M/2到m个关键字,非叶节点存储指向关键字范围的子节点的多重搜索树; 所有关键词出现在整棵树上,只出现一次,非叶节点可以命中;

b树:基于B-树,在叶节点上添加链表指针,所有关键字都出现在叶节点上,非叶节点为叶节点索引b树总是命中叶节点;

B*树:除b树外,还在非叶节点上添加链表指针,使节点的最低利用率从1/2提高到2/3

3、为什么要使用Btree(Btree )

红色树也可以用于索引,但文件系统和数据库系统通常使用B/Tree。 为什么?

一般来说,索引本身也大,不能完全保存存储器,作为索引文件大多存在磁盘

)一个节点可以存储更多数据,从而减少磁盘I/o次数。

)2)叶片节点形成有序链表,便于执行范围操作。

)在集合索引中,叶节点的data中直接包含数据; 在非聚集索引中,叶节点存储数据地址的指针。

4、索引分类

1 .常规索引index :快速搜索

2 .唯一索引

主键索引: primary key :快速搜索约束(唯一而不是空) ) )。

唯一索引: unique :快速搜索约束(唯一) )

3 .合并索引

-主密钥(id,name ) :组合主键索引

-unique(id,name ) :唯一索引

-索引(id,name ) :组合常规索引

5、聚合索引和非聚合索引

聚合索引和非聚合索引都使用b树结构。

1、非聚合索引

未聚合索引的叶节点是索引节点,但有指向数据节点的指针。

MyISAM是非聚合索引。

2、收集索引

集合索引叶节点是数据节点。

对于聚合索引,innodb根据以下规则进行处理:

1、如果定义了主键,则此主键用作聚合索引

2 )如果未定义主键,则将表的第一个唯一非空索引用作聚合索引

3 )如果没有主键且没有适当的唯一索引,innodb内部将生成隐藏的主键作为聚合索引。 这个隐藏的主键是一个6字节的列,值会随着数据的插入而增加。

innodb的常规索引、唯一索引和合并索引都是辅助索引,采用非聚合索引结构。 InnoDB中的所有次索引都将主键作为data域进行引用。

虽然聚合索引可以非常高效地使用主键进行搜索,但子索引搜索需要两次索引搜索:首先搜索子索引以获取主键,然后使用主键将记录检索到主键。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。