首页 数据库 mysql 正文

数据库索引原理(B树结构)

long 2021-02-03 09:30 数据库 人气271

索引是帮助mysql高效获取数据的排好序的数据结构

结构:B Tree,Hash

B Tree:叶子节点有相同深度,每层有很多节点,节点中数据索引从左到右递增。

B Tree,比二叉树和红黑树(平衡二叉树)的层数少,查询效率高。

数据库保存在mysql数据库目录下的data目录下面,一个文件夹一个数据库,点击文件夹可以看到这个数据库所有的表。

BTree

1612416939.png

B+Tree

1612416952.png

hash

1612417008.png


MyISAM数据引擎

.frm:表结构

.myd:表数据

.myi:索引文件


InnoDB引擎

.frm:表结构

.ibd:数据 和 索引

聚集索引(聚簇索引):索引叶子节点里保存了这一行所有的数据记录

非聚集索引:索引叶子节点里保存的是数据的地址


为什么建议InnoDB表必须设置主键,并且是整形自增。

1、Mysql内部组织表数据使用B树,B树要用数据唯一的一列。如果没有,Mysql会内部建一个唯一列(RowId)。

2、整形数据比大小,比字符串比大小简单。整形比字符串节省空间。

3、非自增的可能需要分裂之前的索引节点,就是插入新数据可能需要重建索引,消耗数据库资源。


Hash索引

对字段进行一次哈希运算,根据运算结果计算存储位置,大部分情况都使用B+Tree索引,而不是Hash索引,因为只支持= in,不支持范围查找(between and)


公众号
小程序
网站统计
  • 文章总数:300
  • 总点击量:62015
  • 评论总数:27
  • 网站运行:576 天