Mysql数据库索引

索引:

在关系数据库中,索引是一种数据结构,他将数据提前按照一定的规则进行排序和组织,能够帮助快速定位到数据记录的数据,加快数据库表中数据的查找和访问速度。

B-树:

MySQL 中, MyISAM 引擎和 InnoDB 引擎都是使用 B+Tree 作为索引结构,但
是,两者的实现方式不太一样。
MyISAM 引擎中, B+Tree 叶节点的 data 域存放的是数据记录的地址。在索引检索
的时候,首先按照 B+Tree 搜索算法搜索索引,如果指定的 Key 存在,则取出其
data 域的值,然后以 data 域的值为地址读取相应的数据记录。这被称为 非聚簇索
InnoDB 引擎中,其数据文件本身就是索引文件。相比 MyISAM ,索引文件和数据文
件是分离的,其表数据文件本身就是按 B+Tree 组织的一个索引结构,树的叶节点
data 域保存了完整的数据记录。这个索引的 key 是数据表的主键,因此 InnoDB
数据文件本身就是主索引。这被称为 聚簇索引(或聚集索引) ,而其余的索引都作
为辅助索引,辅助索引的 data 域存储相应记录主键的值而不是地址,这也是和
MyISAM 不同的地方。在根据主索引搜索时,直接找到 key 所在的节点即可取出数
据;在根据辅助索引查找时,则需要先取出主键的值,再走一遍主索引。 因此,在
设计表的时候,不建议使用过长的字段作为主键,也不建议使用非单调的字段作为主
键,这样会造成主索引频繁分裂。

区别:

InnoDB的辅助索引data域存储相应记录主键的值而不是地址
InnoDB的数据文件本身就是主索引文件
MyISAM的索引和数据是分开存储的。

B & B+树两者有何异同呢?

B 树的所有节点既存放键 (key) 也存放 数据 (data) ,而 B+ 树只有叶子节点存放 key
data ,其他内节点只存放 key
B 树的叶子节点都是独立的 ;B+ 树的叶子节点有一条引用链指向与它相邻的叶子节
点。
B 树的检索的过程相当于对范围内的每个节点的关键字做二分查找,可能还没有到达
叶子节点,检索就结束了。而 B+ 树的检索效率就很稳定了,任何查找都是从根节点
到叶子节点的过程,叶子节点的顺序检索很明显。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值