作家
登录

MySQL索引专题一 认识索引

作者: 来源: 2017-09-05 08:58:26 阅读 我要评论

关于这个专题

想写MySQL的索引专题是源竽暌冠之前本身在进修MySQL索引时苦楚的经历,你在网上搜刮关于MySQL的索引的文┞仿,大年夜多是支瑰异碎,没有体系性的对常识点的列举堆砌,文┞仿中会解释你要若何若何做,然则很少涉及去讲为什么要这么做,哪些不克不及做,很难对MySQL有一个体系性的认知,进修如不雅没有体系性的话,就很难在实际的项目中灵活应用,出于此目标,本身驹萃C鸫一个关于MySQL索引的专题系列,算是本身一个进修的总结,如不雅同时能帮到你那再好不过了。下面进入正题,我们先来懂得一下什么是索引以及索引的类型。

熟悉索引

熟悉索引是什么器械异常关键,一个异常恰当的比方就是书的目次页与书的┞俘文内容之间的关系,为了便利查找书中的内容,经由过程对内容建立索引形成目次。是以,起首你要明白的一点就是,索引它也是一个文件,它是要占据物理空间的。

比如对于MyISAM存储引擎来说:

这篇文┞仿先说到这里,目标主如果对MySQL的索引有个概念上的熟悉,以及懂得索引的类型,索引和存储引擎之间的关系,本专题会持续更新,持续对MySQL索引常识逐渐展开,如不雅你感兴趣的话可以存眷该专栏,以及趁便动着手指存眷一下我(^_^),欲望本文对你有所赞助。

.frm后缀的文件存储的是表构造。

.myd后缀的文件存储的是表数据。

如下图所示:

对于InnoDB 存储引擎来说:

.frm后缀的文件存储的是表构造。

.ibd后缀的文件存放索引文件和数据(须要开启innodb_file_per_table 参数)

如下图所示:

下图展示了B-Tree索引是若何存储被索引的数据的:

 

是以,当你对一张表建立索引时,索引文件的大年夜小也会改变,当你数据表中的数据因为增删改变更时,索引文件也会变更的,只不过MySQL会主动保护索引,这个过程不须要你介入,这也是为什么不恰当的索引会影响MySQL机能的原因。

总结:

1. 索引是按照特定的数据构造把数据表中的数据放在索引文件中,以便于快速查找;

2. 索引存在于磁盘中,会占据物理空间。

索引的类型

膳绫擎说到,索引文件时按照不合的数据构造来存储的,数据构造的不合也产生了不合的索引类型,常见的索引类型包含:

  1. B-Tree索引
  2. 哈希索引
  3. 空间数据索引(R-Tree)
  4. 全文索引

下面做一一介绍:

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后缀的文件存储的就是索引文件。

解释:

  1. 左边紫色图表示一个二列的数据表。
  2. 中心表示对fname列进行哈希索引,计算出哈希值。
  3. 右边绿色图表示把生成的哈希值存放于哈希表中。

当我们履行以下萌芽时:

  1. select * from testTable where fname = "mary"

MySQL会起首计算萌芽前提mary的哈希值,然后到哈希表中去找该哈希值,如不雅找到了根据对应的指针也就找到了须要寻找的数据行。

哈希表的优势与限制:

优势:

  1. 只需比对哈希值,是以速度异常快,机能优势明显;

限制:

  1. 不支撑任何范围萌芽,比如where price > 150,因为是基于哈希计算,支撑等值比较。
  2. 哈希表是无序存储的,是以索引数据无法用于排序。
  3. 主流存储引擎不支撑该类型,比如MyISAM和InnoDB。哈希索引只有Memory, NDB两种引擎支撑。

总结:

是以,哈希索引固然速度快,但其实应用很受限,只实用于某些特别的场合。

3. 空间数据索引(R-Tree)


  推荐阅读

  小企业的数据备份和安全提示

如今,层出不穷的新技巧供给了很自力异,但最终使人们的生活依附于技巧。企业必须以各类情势应用技巧,例如企业的数捷报份。企业须要花费时光才能在对其私有机密数据构成威逼之进步行备份。企业无疑是任何国度经济成>>>详细阅读


本文标题:MySQL索引专题一 认识索引

地址:http://www.17bianji.com/lsqh/37117.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)