MYSQL中的B TREE与B+TREE

一、索引

1.可以理解为排好序的数据结构,结合二分查找算法可以理解为什么索引能增加查询速度
2.可以提高数据库的检索效率,降低数据库的IO成本
3.索引也要占用空间,实际上也是一张表,保存了主键与索引字段、指向实体表记录
4.提高查询速度,但会降低更新表速度(update、delete、insert),在更新时,不仅要保存数据,还要保存索引文件,调整表数据更新带来的键值变化的索引信息
5.非主键索引叶子结点存储的是主键
7.索引最左前缀原理(针对聚合索引,若第一个字段没有,则不走索引)
MYSQL中的B TREE与B+TREE

二、MYSQL中常见的存储引擎

1.MyISAM(5.5之前)

1.不支持事物、不支持外键
2.访问速度快
3.对事物完整性没有要求或者表以select、insert为主的应用可以用这个引擎创建表

2.InnoDB

1.具有提交、回滚、和奔溃恢复能力的事物安全,其处理事物相对MYISAM会差一些
2.占用更多的磁盘空间来保留数据和索引
3.支持自动增长列、支持外键约束

3.MEMORY

1.将表中的数据存储到内存中,为查询和引用其他数据提供快速访问
2.MEMORY默认情况下使用的是散列索引,散列索引进行“相等比较非常快”,但是对“范围比较"的速度就慢很多了,因此散列索引值适合用在"=“和”<=>“操作符中,不适合在”>“和”<“操作符中,也不适合用在order by字句里。如果要使用”>“和”<"或者"between"可以使用btree索引来加快速度

特性 InnoDB MyISAM MEMORY
事物安全 支持
存储限制 64TB
空间使用
内存使用
拆入数据的速度
对外键的支持 支持

三、B tree 与 B+tree

B tree

A:叶节点具有相同的深度,叶节点的指针为空
B:所有索引元素不重复,
C:节点中的数据索引从左到右递增
MYSQL中的B TREE与B+TREE

B+tree

A:非叶子节点不存储data(固定16K,可以存储更多的索引),只存储索引(冗余)
B:叶子结点包含所有的索引字段
c:叶子节点用指针连接,提高区间的访问性能
MYSQL中的B TREE与B+TREE

上一篇:论文阅读:Change Detection From Synthetic Aperture Radar Images Based on Channel Weighting-Based Deep Cas


下一篇:MySQL之存储引擎