B树MySQL索引使用原则

(给数据分析与开发加星标,提升数据技能)

来源:小宝鸽

blog.csdn.nt/u/articl/dtails/

MySQL一直了解得都不多,之前写sql准备提交生产环境之前的时候,老员工帮我检查了下sql,让修改了一下存储引擎,当时我使用的是Myisam,后面改成InnoDB了。为什么要改成这样,之前都没有听过存储引擎,于是网上查了一下。

事实上使用不同的存储引擎也是有很大区别的,下面猿友们可以了解一下。

一、存储引擎的比较

注:上面提到的B树索引并没有指出是B-Tr和B+Tr索引,但是B-树和B+树的定义是有区别的。

在MySQL中,主要有四种类型的索引,分别为:B-Tr索引,Hash索引,Fulltxt索引和R-Tr索引。

B-Tr索引是MySQL数据库中使用最为频繁的索引类型,除了Archiv存储引擎之外的其他所有的存储引擎都支持B-Tr索引。Archiv引擎直到MySQL5.1才支持索引,而且只支持索引单个AUTO_INCREMENT列。

不仅仅在MySQL中是如此,实际上在其他的很多数据库管理系统中B-Tr索引也同样是作为最主要的索引类型,这主要是因为B-Tr索引的存储结构在数据库的数据检索中有非常优异的表现。

一般来说,MySQL中的B-Tr索引的物理文件大多都是以BalancTr的结构来存储的,也就是所有实际需要的数据都存放于Tr的LafNod(叶子节点),而且到任何一个LafNod的最短路径的长度都是完全相同的,所以我们大家都称之为B-Tr索引。当然,可能各种数据库(或MySQL的各种存储引擎)在存放自己的B-Tr索引的时候会对存储结构稍作改造。如Innodb存储引擎的B-Tr索引实际使用的存储结构实际上是B+Tr,也就是在B-Tr数据结构的基础上做了很小的改造,在每一个LafNod上面出了存放索引键的相关信息之外,还存储了指向与该LafNod相邻的后一个LafNod的指针信息(增加了顺序访问指针),这主要是为了加快检索多个相邻LafNod的效率考虑。

InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM)

可能对于没有了解过索引的猿友这样看这篇文章十分吃力,这类猿友有必要先对Mysql索引有个大体的了解,可以看看另外一篇文章:数据库查询优化——Mysql索引


转载请注明:http://www.aierlanlan.com/rzfs/823.html

  • 上一篇文章:
  •   
  • 下一篇文章: