关于这个专题
想写MySQL的索引专题是源竽暌冠之前本身在进修MySQL索引时苦楚的经历,你在网上搜刮关于MySQL的索引的文┞仿,大年夜多是支瑰异碎,没有体系性的对常识点的列举堆砌,文┞仿中会解释你要若何若何做,然则很少涉及去讲为什么要这么做,哪些不克不及做,很难对MySQL有一个体系性的认知,进修如不雅没有体系性的话,就很难在实际的项目中灵活应用,出于此目标,本身驹萃C鸫一个关于MySQL索引的专题系列,算是本身一个进修的总结,如不雅同时能帮到你那再好不过了。下面进入正题,我们先来懂得一下什么是索引以及索引的类型。
熟悉索引
熟悉索引是什么器械异常关键,一个异常恰当的比方就是书的目次页与书的┞俘文内容之间的关系,为了便利查找书中的内容,经由过程对内容建立索引形成目次。是以,起首你要明白的一点就是,索引它也是一个文件,它是要占据物理空间的。
比如对于MyISAM存储引擎来说:
这篇文┞仿先说到这里,目标主如果对MySQL的索引有个概念上的熟悉,以及懂得索引的类型,索引和存储引擎之间的关系,本专题会持续更新,持续对MySQL索引常识逐渐展开,如不雅你感兴趣的话可以存眷该专栏,以及趁便动着手指存眷一下我(^_^),欲望本文对你有所赞助。
.frm后缀的文件存储的是表构造。
.myd后缀的文件存储的是表数据。
如下图所示:
对于InnoDB 存储引擎来说:
.frm后缀的文件存储的是表构造。
.ibd后缀的文件存放索引文件和数据(须要开启innodb_file_per_table 参数)
如下图所示:
下图展示了B-Tree索引是若何存储被索引的数据的:

是以,当你对一张表建立索引时,索引文件的大年夜小也会改变,当你数据表中的数据因为增删改变更时,索引文件也会变更的,只不过MySQL会主动保护索引,这个过程不须要你介入,这也是为什么不恰当的索引会影响MySQL机能的原因。
总结:
1. 索引是按照特定的数据构造把数据表中的数据放在索引文件中,以便于快速查找;
2. 索引存在于磁盘中,会占据物理空间。
索引的类型
膳绫擎说到,索引文件时按照不合的数据构造来存储的,数据构造的不合也产生了不合的索引类型,常见的索引类型包含:
- B-Tree索引
- 哈希索引
- 空间数据索引(R-Tree)
- 全文索引
下面做一一介绍:
1. B-Tree索引
B-Tree索引是最常用的一种索引,如不雅没有指定特定的类型,那么多半就是B-Tree索引,事实上,很多搜刮引擎应用的是它的变种B+Tree,这是对B-Tree的一个优化,如不雅须要具体懂得,可以参考数据构造方面的书本,这里不做具体商量。以下统称为B-Tree索引。
绝大年夜多半的存储引擎,比如MyISAM和InnoDB都支撑这种索引,是以说它是应用最广泛,最常用的一种索引方法,然则不合的存储引擎在具体实现时会稍有不合,比如MyISAM会应用前缀紧缩的方法对索引进行紧缩,InnoDB则不会。
解释:
左图是一个包含三列的数据表,右图则展示了数据是若何被索引的。
可以看出B-Tree是对索引列是按照次序存储的,每个叶子节点指向被索引的数据,这也是B-Tree索引支撑范围查找数据的原因。
2. 哈希索引
比拟于B-Tree索引,哈希索引的实现就比较简单了,它是基于哈希表来实现的,对于要索引的列,存储引擎管帐算出一一对应的哈希码,然后把哈希码存放在哈希表中作为key,value值是指向该行数据的指针。
.myi后缀的文件存储的就是索引文件。
解释:
- 左边紫色图表示一个二列的数据表。
- 中心表示对fname列进行哈希索引,计算出哈希值。
- 右边绿色图表示把生成的哈希值存放于哈希表中。
当我们履行以下萌芽时:
- select * from testTable where fname = "mary";
MySQL会起首计算萌芽前提mary的哈希值,然后到哈希表中去找该哈希值,如不雅找到了根据对应的指针也就找到了须要寻找的数据行。
哈希表的优势与限制:
优势:
- 只需比对哈希值,是以速度异常快,机能优势明显;
限制:
- 不支撑任何范围萌芽,比如where price > 150,因为是基于哈希计算,支撑等值比较。
- 哈希表是无序存储的,是以索引数据无法用于排序。
- 主流存储引擎不支撑该类型,比如MyISAM和InnoDB。哈希索引只有Memory, NDB两种引擎支撑。
总结:
是以,哈希索引固然速度快,但其实应用很受限,只实用于某些特别的场合。
3. 空间数据索引(R-Tree)
推荐阅读
如今,层出不穷的新技巧供给了很自力异,但最终使人们的生活依附于技巧。企业必须以各类情势应用技巧,例如企业的数捷报份。企业须要花费时光才能在对其私有机密数据构成威逼之进步行备份。企业无疑是任何国度经济成>>>详细阅读
本文标题:MySQL索引专题一 认识索引
地址:http://www.17bianji.com/lsqh/37117.html
1/2 1