0
点赞
收藏
分享

微信扫一扫

mysql的进阶学习--应用篇--索引

infgrad 2022-02-14 阅读 45

安装Linux版本的mysql

系统: centOS7
msyql: 8.0.26

索引概述

索引是一种有序的数据结构
可以帮助MySQL高效的获取数据.

那也就是说: 在数据库表结构之中, 除了要保存数据之外, 数据库还要去维护索引这种数据结构, 利用这些结构指向保存的数据. 这样就可以在这些数据结构中通过高级的查找算法, 快速定位到原始数据.
在这里插入图片描述
在这里插入图片描述

索引结构

MySQL的索引是在存储引擎层中实现的, 不同的存储引擎有不同的结构, 主要包含以下几种:
在这里插入图片描述

二叉树索引结构

在这里插入图片描述
改良:
在这里插入图片描述
在这里插入图片描述

B-tree索引结构

以一颗最大度数为5的b-tree为例(每一个节点最多存储4个key, 5个指针)
在这里插入图片描述

B+tree索引结构

所有的元素只在叶子节点, 在上边的都只是起到索引的用处.
叶子节点形成了一个单向链表.
在这里插入图片描述
在这里插入图片描述

Hash索引结构

在这里插入图片描述
hsah索引的特点:
只能用来对等比较, 不支持范围查询;
无法利用索引完成排序;
查询效率高于B+tree;

在mysql中, 支持hash索引的引擎是, memory引擎, 而InnoDB中具有自适应hash功能, hash索引是存储引擎根据B+tree在指定条件下自动构建的.

为什么是B+tree

在这里插入图片描述

索引分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述
可以发现, Innodb的表即使存放两千多万条记录, 也才三层. 效率是很高的.
那如果有上亿的记录啦, 那就得考虑分库分表啦~

索引语法

SQL性能分析

索引使用

索引设计原则

举报

相关推荐

0 条评论