加入收藏 | 设为首页 | 会员中心 | 我要投稿 武汉站长网 (https://www.027zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL索引的运用原则

发布时间:2022-01-18 13:53:50 所属栏目:MySql教程 来源:互联网
导读:本篇内容主要讲解MySQL索引的使用原则,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习MySQL索引的使用原则吧! 一、存储引擎的比较 在 MySQL 中,主要有四种类型的索引,分别为: B-Tree 索引, Hash 索引, Fu
       本篇内容主要讲解“MySQL索引的使用原则”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL索引的使用原则”吧!
 
一、存储引擎的比较
 
      在 MySQL 中,主要有四种类型的索引,分别为: B-Tree 索引, Hash 索引, Fulltext 索引和 R-Tree 索引。
 
      B-Tree 索引是 MySQL 数据库中使用最为频繁的索引类型,除了 Archive 存储引擎之外的其他所有的存储引擎都支持 B-Tree 索引。Archive 引擎直到 MySQL 5.1 才支持索引,而且只支持索引单个 AUTO_INCREMENT 列。
 
      不仅仅在 MySQL 中是如此,实际上在其他的很多数据库管理系统中B-Tree 索引也同样是作为最主要的索引类型,这主要是因为 B-Tree 索引的存储结构在数据库的数据检索中有非常优异的表现。
  
如 Innodb 存储引擎的 B-Tree 索引实际使用的存储结构实际上是 B+Tree,也就是在 B-Tree 数据结构的基础上做了很小的改造,在每一个Leaf Node 上面出了存放索引键的相关信息之外,还存储了指向与该 Leaf Node 相邻的后一个 LeafNode 的指针信息(增加了顺序访问指针),这主要是为了加快检索多个相邻 Leaf Node 的效率考虑。
 
InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM)
 
接下来我们先看看B-树、B+树的概念。弄清楚,为什么加了索引查询速度会加快?
 
二、B-树、B+树概念
 
B树
 
即二叉搜索树:
 
1、所有非叶子结点至多拥有两个儿子(Left和Right);
 
2、所有结点存储一个关键字;
 
3、非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;
 
B-树
 
是一种多路搜索树(并不是二叉的):
 
1、定义任意非叶子结点最多只有M个儿子;且M>2;
 
2、根结点的儿子数为[2, M];
 
3、除根结点以外的非叶子结点的儿子数为[M/2, M];
 
4、每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)
 
5、非叶子结点的关键字个数=指向儿子的指针个数-1;
 
6、非叶子结点的关键字:K[1], K[2], …, K[M-1];且K[i] < K[i+1];
 
7、非叶子结点的指针:P[1], P[2], …, P[M];其中P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于K[M-1]的子树,其它P[i]指向关键字属于(K[i-1], K[i])的子树;
 
8、所有叶子结点位于同一层;

(编辑:武汉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读